我有一个gulp任务,重点是将多个Angular2组件捆绑在一起,并且失败并显示以下错误消息:
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
答案 0 :(得分:1)
这是由匿名System.register
电话引起的。如果您打算捆绑,则应该命名所有呼叫:
System.register([],...); //no bundle, should be downloaded as file
System.register('myModule', [], ...); //this is how it should be for bundling
显然,如果尚未指定编译器选项--outFile
,TypeScript将生成匿名注册。另一种方法是在/// <amd-module name="my module name" />
文件的顶部添加.ts
,以解决捆绑问题。此外,如果你正在使用路由器,你可能需要防止标识符损坏,因为它给我带来了很多问题,显然会破坏角度router.js