gpt4 book ai didi

typescript - 使用 systemjs 在 typescript 中的 Angular 2 应用程序中导入位于应用程序文件夹之外的共享服务

转载 作者:太空狗 更新时间:2023-10-29 17:37:19 25 4
gpt4 key购买 nike

我有两个具有以下结构的 Angular 2 应用程序:

/应用程序
/app1
/app2
/共享

在我的 angular 2 组件(用 typescript 编写)中,我导入了几个模块(位于同一文件夹中),没有任何问题:从 './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);

最佳答案

包括 map 对象的文件夹路径。

var map = {
'shared' : 'app/shared',
'@angular': '/node_modules/@angular',
'rxjs': '/node_modules/rxjs'
};

在包中添加

var packages = {
'rxjs': { defaultExtension: 'js' },
'shared': { defaultExtension: 'js' }
};

关于typescript - 使用 systemjs 在 typescript 中的 Angular 2 应用程序中导入位于应用程序文件夹之外的共享服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38538205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com