2016-04-28 18 views
3

ich einen Schluck Aufgabe habe, den ganzen Punkt mehrere Angular2 Komponenten zusammen, um wirklich bündeln zu sein, und es schlägt mit folgenden Fehlermeldung:Angular2, verketten Komponenten in ein einziges Bündel und SystemJS nicht

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. 

Dies gilt , die System.register Aufrufe werden nicht benannt, aber das ist, was der TypeScript-Compiler generiert. Ich konnte online keine Ressourcen finden, die erklären, wie ich dieses Verhalten ändern kann, also nahm ich an, dass das nicht möglich ist. Diese

ist, wie ich versuche, die file.min.js zu importieren:

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

Und das ist, was in file.min.js ist:

(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); 

Ich konnte völlig aus, obwohl, wie die Bündelung soll zu tun mit SystemJS

Antwort

1

Dies wird durch anonyme System.register Anrufe verursacht. Alle Anrufe sollten benannt werden, wenn Sie zu bündeln planen:

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

So offenbar wird Typoskript anonyme Anmeldungen erzeugen, wenn der Compiler-Option --outFile nicht angegeben wurde. Eine andere Möglichkeit besteht darin, /// <amd-module name="my module name" /> oben in der Datei .ts hinzuzufügen, wodurch das Problem der Bündelung behoben wird. Auch wenn Sie einen Router verwenden, müssen Sie möglicherweise die Identifizierung von Identifikatoren verhindern, da dies viele Probleme für mich verursacht hat und den eckigen Code router.js

nicht mehr korrekt wiedergibt
Verwandte Themen