我想使用带有ip地址的库SystemJS (注意,这个问题看起来可能很相似,但这是我在尝试完成此任务时遇到的另一个问题)。
库ip地址依赖于util-deprecate。它以下列方式进口:
var util = require('util');然后按以下方式使用:
Address4.prototype.toV6Group =
util.deprecate(Address4.prototype.toGroup6,
'deprecated: `toV6Group` has been renamed to `toGroup6`');当我在节点项目中导入ip地址时.
var ipAddress = require('ip-address');...then我没有任何问题。
当我在SystemJS项目中导入ip地址时.
System.import('ip-address');...then我得到了一个错误:
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文件是这里,它直接导出弃用函数。
注意,如果我修改ip地址模块,以便所有调用都是形式的,我就可以让它工作:
Address4.prototype.toV6Group =
util(Address4.prototype.toGroup6,
'deprecated: `toV6Group` has been renamed to `toGroup6`');不过,如果我能避免的话,我宁愿不修改第三方库。
发布于 2016-07-25 20:52:51
好的,问题是我认为ip-address模块使用的是util-deprecate。原来ip-address模块导入util的方式.
var util = require('util');它不是导入util-deprecate,而是导入Node内置的包util。因此,为了使ip-address真正使用util-deprecate,必须对ip-address模块进行更改。
发布于 2016-07-29 22:50:58
由于您使用了jspm标记,所以有一个非常简单的解决方案。
使用jspm,您可以使用以下方法直接从npm安装ip地址:
jspm install npm:ip-address它将为您完成所有的依赖关系管理。
我在浏览器和node.js中使用ip-address提供的示例代码对其进行了测试:
import {Address6} from 'ip-address'
const address = new Address6('2001:0:ce49:7601:e866:efff:62c3:fffe');
console.log(address.isValid()); // true
const teredo = address.inspectTeredo();
console.log(teredo.client4); // '157.60.0.1'而且效果很好。
https://stackoverflow.com/questions/38534424
复制相似问题