前一段时间我在尝试requireJS here时问了一个类似的问题,我不知道我做了什么然后是正确与否,但我无法使用systemJS。
我尝试创建单个模块文件,其中包含针对给定模块的多个类的导出。 这是示例模块(称为module1)。
import {Module1ComponentA} from "./a.component";
import {Module1ComponentB} from "./b.component";
export * from "./a.component";
export * from "./b.component";
angular.module("module1", [])
.component("module1ComponentA", new Module1ComponentA())
.component("module1ComponentB", new Module1ComponentB())
;
然后我可以使用
引用任一组件import {Module1ComponentA} from './module1/module1
问题是我在加载应用时遇到异常。
Error: TypeError: i.setters[l] is not a function
at exportStar_1 (http://127.0.0.1:8080/output/module1/module1.js:10:9)
at Array.setters.b_component_1 (http://127.0.0.1:8080/output/module1/module1.js:16:17)
at execute (http://127.0.0.1:8080/output/module1/a.component.js:14:13)
Error loading http://127.0.0.1:8080/output/boot.js
如果我没有包含' export'语句但引用源文件的导入,然后加载。
这是SystemJS配置
<script>
System.config({
packages: {
output: {
format: 'register',
defaultExtension: 'js'
}
},
map: {
app: 'output/boot.js',
module1: 'output/module1/module1.js'
},
meta: {
'app': { deps: [ 'module1' ] },
'*.js': {
scriptLoad: true,
}
}
});
System.import('output/boot.js')
.then(null, console.error.bind(console));
</script>
这是模块生成的js文件
System.register(["./a.component", "./b.component"], function(exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var a_component_1, b_component_1;
function exportStar_1(m) {
var exports = {};
for(var n in m) {
if (n !== "default") exports[n] = m[n];
}
exports_1(exports);
}
return {
setters:[
function (a_component_1_1) {
a_component_1 = a_component_1_1;
exportStar_1(a_component_1_1);
},
function (b_component_1_1) {
b_component_1 = b_component_1_1;
exportStar_1(b_component_1_1);
}],
execute: function() {
angular.module("module1", [])
.component("module1ComponentA", new a_component_1.Module1ComponentA())
.component("module1ComponentB", new b_component_1.Module1ComponentB());
}
}
}); //#sourceMappingURL = module1.js.map
有关如何执行此操作的任何建议吗?