2016-07-30 14 views
2

私は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 

右方向に任意のステップは大歓迎です!

+0

systemJSの設定が正しいです。私はそれをあなたのローカルコピーof angular2-momentに置き換えて、[plunker](http://plnkr.co/edit/QcyPjTzXMzVCElB2eKWW?p=preview)にハッキングし、angular2-momentからのプランナーに提供されたものに置き換えましたgithub repo。 index.htmlはSystemJSを構成する唯一の場所か、別のconfig.jsファイルを持っていますか? –

+0

@ MarkLanger私はPlunker(npmcdnソースを使用して)からSystemJS設定を試しましたが、同じエラーが発生します。私はindex.html以外の設定はありません。ネットワークタブでangular2-moment index.jsが正しくロードされていますが、まだ別のモジュール形式が期待されています。 –

答えて

0

あなたは「angular2モーメントのアクセスに不正確であると思われる '/ node_modules/angular2-瞬間' を、使用してパッケージをしようとしている、以下のような

更新スクリプトの設定、

<script> 
    System.config({ 
    map: { 'angular2-moment': '/node_modules/angular2-moment' }, 
    packages: { 
     'angular2-moment': { 'main': 'index' } 
    } 
}); 
</script> 

・ホープこれは役立ちます!

0

あなたはangular2-momentをクローン化して、選択したモジュールタイプを使用するようにコンパイルするとどうなりますか?それはcommonjsをやっているように見えますが、あなたはノードからサーバー側のスクリプトを持っています。

関連する問題