当我从我的服务器的根目录加载应用程序时,该应用程序正常工作。这在实践中是不可能的,因为我们的应用程序使用了漂亮的URL。例如http://www.website.com/modules/worker/person/1/1/1
加载包含上一个网址的网页会导致system.js查找文件夹/modules/worker/person/1/1
,而不是基于" /"的文件夹。
解决方案是设置baseURL:"/"
,以便根据根目录加载模块。
此解决方案的问题是节点模块未正确加载,而不是查看node_modules目录,system.js正在查找根目录。 system.js查找/angular2/http.js
而不是/node_modules/angular2/http.js
当我从"节点"切换时模块编译到"经典"结果是一样的。
有关如何进行的任何想法?
答案 0 :(得分:1)
以下是使用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(所有外部库)外部加载的每个资产,我必须在路径配置属性中直接指向它们。此列表将根据您发布的Typescript类的依赖性而有所不同。