私はangular2プロジェクトにangular2-momentライブラリを持ち込もうとしていますが、SystemJSを協力させることはできません。angular2-momentを含むAngular2 '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';
次のコンソールエラーが発生
:SystemJSは異なるモジュールタイプを期待していたように、これは私には見えた
今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
一目見ただけで、私はフォーマットを追加するようなことを試してみました:」 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の設定が正しいです。私はそれをあなたのローカルコピーof angular2-momentに置き換えて、[plunker](http://plnkr.co/edit/QcyPjTzXMzVCElB2eKWW?p=preview)にハッキングし、angular2-momentからのプランナーに提供されたものに置き換えましたgithub repo。 index.htmlはSystemJSを構成する唯一の場所か、別のconfig.jsファイルを持っていますか? –
@ MarkLanger私はPlunker(npmcdnソースを使用して)からSystemJS設定を試しましたが、同じエラーが発生します。私はindex.html以外の設定はありません。ネットワークタブでangular2-moment index.jsが正しくロードされていますが、まだ別のモジュール形式が期待されています。 –