2016-04-28 15 views
3

私は一口タスク、本当に一緒に複数のAngular2コンポーネントをバンドルしている全体のポイントを持って失敗し、次のエラーメッセージで失敗しますAngular2は、単一のバンドルに部品を連結し、SystemJSは

Error: Multiple anonymous System.register calls in module http://site/bundles/Pages/file.min.js. If loading a bundle, ensure all the System.register calls are named. 

これが真でありますSystem.register呼び出しには名前は付けられませんが、これがTypeScriptコンパイラによって生成されます。私はどのようにその行動を変更するために説明するリソースを見つけることができませんでしたので、私はそれが不可能だと思った?

これは私がfile.min.jsをインポートしようとしている方法です:

<script type="text/javascript">System.import('bundles/Pages/file.min.js').then(null, console.error.bind(console));</script> 

そして、これがfile.min.jsの内部で何です:

(function(System, SystemJS) {System.register([],function(e,t){"use strict";t&&t.id;return{setters:[],execute:function(){}}}); 
... 
System.register([],function(e,t){"use strict";t&&t.id;return{setters:[],execute:function(){}}}); 
System.register([],function(e,t){"use strict";t&&t.id;return{setters:[],execute:function(){}}}); 
System.register([],function(e,t){"use strict";t&&t.id;return{setters:[],execute:function(){}}}); 
System.register([],function(t,e){"use strict";var n;e&&e.id;return{setters:[],execute:function(){n=function(){function t(){}return t}(),t("MyService",n)}}}); 
... 
})(System, System); 

私は完全にオフにかかわらず、同梱が想定している方法についてのかもしれませんこれを行うにはSystemJS

答えて

1

これは匿名のSystem.register呼び出しによって発生します。あなたがバンドルすることを計画している場合は、すべての呼び出しは、名前を付ける必要があります:

System.register([],...); //no bundle, should be downloaded as file 
System.register('myModule', [], ...); //this is how it should be for bundling 

コンパイラオプション--outFileが指定されていないのであれば、明らか活字体は、匿名の登録を生成します。もう1つの方法は、.tsファイルの先頭に/// <amd-module name="my module name" />を追加して、バンドルの問題を解決します。また、ルータを使用している場合は、私に多くの問題を引き起こし、明らかに角度を壊すので、識別子のマングリングを防ぐ必要があるかもしれません。router.js

関連する問題