当我从服务器的根目录加载应用程序时,该应用程序将运行。由于我们的应用程序使用了漂亮的网址,因此在实践中这是不可能的。例如,http://www.website.com/modules/worker/person/1/1/1
使用先前的URL加载页面会导致system.js在/modules/worker/person/1/1
文件夹中查找,而不是基于“ /”的文件夹。
解决方案是设置baseURL:"/"
,以便基于根目录加载模块。
THIS解决方案的问题在于,节点模块未正确加载,system.js不在根目录中查找,而没有在node_modules目录中查找。 system.js在/angular2/http.js
中查找,而不是在/node_modules/angular2/http.js
中查找
当我从“节点”模块编译切换到“经典”时,结果是相同的。
对如何进行有任何想法吗?
最佳答案
这是我使用System.config对象中的paths属性解决此问题的方法:
System.config({
defaultJSExtensions: true,
baseURL: "/",
paths: {
'modules/worker/*': '/modules/worker/*',
'angular2/*': '/node_modules/angular2/*',
'rxjs/*': '/node_modules/rxjs/*',
},
packages: {
modules : {
worker: {
format: 'register',
defaultExtension: 'js'
}
}
}
});
System.import('modules/worker/main')
.then(null, console.error.bind(console));
对于在main.js(所有外部库)外部加载的每个资产,我必须在paths config属性中直接指向它们。根据您发布的Typescript类的依赖关系,此列表可能会有所不同。