我有两个角2级的应用在下面的结构中的应用程序的文件夹以外住在角2应用在打字稿:导入共享服务,使用systemjs
/应用
/APP1
/APP2
/共享
在我的angular 2组件(使用打字稿)中,我导入了几个模块(位于同一文件夹中),没有任何问题: 从'./test1.service'导入{TestService1};
但是,当我试图从共享文件夹中导入某些东西时,无法在运行时(浏览器)加载所需的模块。 从'../shared/test2.service'导入{TestService2}; 浏览器说:http://something.something.darkside/app/test2.service 404(未找到)。
我可以使用defaultJSExtensions设置为true,这将解决问题。但我想知道如何正确配置systemjs来处理这种情况。
systemjs.config.js
(function (global) {
var ngPackageNames = [ bla, ng2packages... ];
//ng2 apps
var ngApps = [
'/app/app1',
'/app/app2'
];
var map = {
'@angular': '/node_modules/@angular',
'rxjs': '/node_modules/rxjs'
};
var packages = {
'rxjs': { defaultExtension: 'js' }
};
//adds package entries for each of the needed ng2 packages
ngPackageNames.forEach(function (pkgName) {
packages['@angular/' + pkgName] = System.packageWithIndex
? { main: 'index.js', defaultExtension: 'js' }
: { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
});
//adds map entries and package entries for the apps
ngApps.forEach(function (app) {
var appName = app.substring(app.lastIndexOf('/') + 1);
map[appName] = app;
packages[appName] = { main: appName + '.main.js', defaultExtension: 'js' };
});
System.config({ map: map, packages: packages });
})(this);
它不是打字稿进口的问题,多数民众赞成的问题。其SystemJs如何加载文件和模块。对于SystemJs能够引用导入,其路径必须加载到SystemJS因此需要映射。 –
只需确认:我们只需要额外的systemjs.config.js条目,因为有问题的文件位于应用程序主入口点之上,对吧?例如../../?尽管systemjs仍然从服务器请求文件。我想知道这是怎么回事。但是,只要你确认第一点,我会将其标记为已回答,以便其他人可以将其用作参考。 – SynBiotik
是的。理想情况下,如果你可以有一个文件夹“应用程序”的整体映射,它应该正确加载文件。然而,因为有2个应用程序会反对它。 –