我正在尝试将angular2-moment库引入我的angular2项目,但我似乎无法让SystemJS合作。
<script src="lib/es6-shim.min.js"></script>
<script src="lib/angular2-polyfills.js"></script>
<script src="lib/traceur-runtime.js"></script>
<script src="lib/system-csp-production.src.js"></script>
<script src="lib/Reflect.js"></script>
<script>
System.config({
map: {
'angular2-moment': '/node_modules/angular2-moment',
},
packages: {
'/node_modules/angular2-moment': {
'main': 'index'
}
}
});
</script>
<script src="lib/angular2.js"></script>
<script src="lib/router.js"></script>
<script src="lib/http.js"></script>
<script src="lib/Rx.js"></script>
<script>
System.import('app').catch(console.log.bind(console)); //loads my app
</script>
我的应用程序正常使用此配置,直到我尝试从我的应用程序中的angular2-moment库导入。
import {TimeAgoPipe} from 'angular2-moment';
导致以下控制台错误:
Uncaught TypeError: require is not a function
Error: (SystemJS) http://website.dev/node_modules/angular2-moment/index.js did not call System.register or AMD define. If loading a global module configure the global name via the meta exports property for script injection support
现在乍一看,我觉得SystemJS期待不同的模块类型,但我尝试过添加格式:“esm”或“common”到包配置无济于事。错误是正确的(模块中没有System.register,而是导出功能)但我不确定如何修复它。
angular2-moment的index.js如下所示:
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require('./CalendarPipe'));
__export(require('./DateFormatPipe'));
__export(require('./DurationPipe'));
__export(require('./FromUnixPipe'));
__export(require('./TimeAgoPipe'));
//# sourceMappingURL=index.js.map
非常感谢正确方向的任何步骤!
答案 0 :(得分:0)
您正试图访问&#39; angular2-moment&#39;包使用&#39; / node_modules / angular2-moment&#39;,这似乎不正确,
更新您的脚本配置,如下所示
<script>
System.config({
map: { 'angular2-moment': '/node_modules/angular2-moment' },
packages: {
'angular2-moment': { 'main': 'index' }
}
});
</script>
希望这会有所帮助!!
答案 1 :(得分:0)
如果您克隆angular2-moment,然后将其编译为使用您选择的模块类型,该怎么办?看起来它正在做一个commonjs,但你有来自节点的服务器端脚本。