javascript - "Namespacing"systemJS 中的导入

标签 javascript systemjs jspm

我想使用图书馆 ip-address使用 SystemJS(注意,this question 可能看起来很相似,但这是我在尝试完成此任务时遇到的另一个问题)。

库 ip-address 依赖于 util-deprecate。它按如下方式导入:

var util = require('util');

然后按如下方式使用它:

Address4.prototype.toV6Group =
  util.deprecate(Address4.prototype.toGroup6,
    'deprecated: `toV6Group` has been renamed to `toGroup6`');

当我在节点项目中将 ip-address 导入为...

var ipAddress = require('ip-address');

...那么我就没有任何问题了。

当我在 SystemJS 项目中导入 ip-address 时...

System.import('ip-address');

...然后我得到一个错误:

util.deprecate is not a function

如何配置 SystemJS 来执行此导入?目前我正在配置它......

const map: any = {
  'ip-address':'vendor/ip-address',
  'util':'vendor/util-deprecate'
}

const packages: any = {
  'ip-address': {main:'ip-address.js'},
  'util': {main: 'browser'}
};

只是为了保存查找,util-deprecate 的 browser.js 文件是 here ,它是直接导出 deprecate 函数。

请注意,如果我修改 ip-address 模块以便所有调用都采用以下形式,我可以让它工作:

Address4.prototype.toV6Group =
  util(Address4.prototype.toGroup6,
    'deprecated: `toV6Group` has been renamed to `toGroup6`');

如果可以避免,我宁愿不修改第 3 方库。

最佳答案

好吧,事实证明问题是我认为 ip-address 模块正在使用 util-deprecate。事实证明,ip-address 模块导入 util 的方式...

var util = require('util');

它不是导入 util-deprecate 而是导入 Node 的内置包 util。因此,为了让 ip-address 真正使用 util-deprecate,必须对 ip-address 模块进行更改。

关于javascript - "Namespacing"systemJS 中的导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38534424/

相关文章:

javascript - 使用 Webpack 构建 JS 库时向浏览器公开默认变量

javascript - 关于刷新MySQL上自动提交的浏览器数据

javascript - 正则表达式匹配表行有多行

javascript - System.config() 调用 <head> 或 <body>?

javascript - 我可以重写 JSPM 包中的方法吗?

javascript - 用相同的函数填充数组

caching - 用于生产和缓存管理的 SystemJS 版本控制(requirejs urlArgs 替代方案)

typescript - 为什么 tsc(Typescript 编译器)忽略 RxJS 导入?

javascript - webpack 是否允许在不像 jspm 那样构建的情况下运行我的应用程序?

javascript - if (typeof window !== 'undefined' ) 的目的是什么