我试图将angular2-moment库引入到我的angular2项目中,但我似乎无法让SystemJS合作。Angular2包括angular2-moment'require'不是函数'
<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矩的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
在正确的方向的任何步骤,不胜感激!
您的systemJS配置是正确的。我把它变成了一个[plunker](http://plnkr.co/edit/QcyPjTzXMzVCElB2eKWW?p=preview),通过angular2-moment的本地副本替换为从angular2-moment github回购。 index.html是您配置SystemJS的唯一地方,还是您有单独的config.js文件? –
@MarkLanger我尝试从Plunker的SystemJS配置(使用npmcdn源),并且我得到相同的错误。除了index.html中的配置外,我没有任何配置。我可以在网络标签中看到正确加载了angular2-moment index.js,但仍然期待着不同的模块格式。 –