我試圖將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,但仍然期待着不同的模塊格式。 –