我不明白我怎么能让IntelliJ明白我的库是用SystemJS映射的。所以我在导入下得到一条红色波浪线,如下图所示:
但是,模块已正确加载,我可以使用它,即网站正在运行。 @angular/core
似乎得到了承认。我在system.config.js
中使用以下映射:
var map = {
'app': '/ng2experiments/app', // 'dist',
'@angular': '/ng2experiments/node_modules/@angular',
'angular2-in-memory-web-api': '/ng2experiments/node_modules/angular2-in-memory-web-api',
'rxjs': '/ng2experiments/node_modules/rxjs',
'notifications': '/ng2experiments/node_modules/angular2-notifications'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
'notifications': { main: 'components.js', defaultExtension: 'js' }
};
为什么@angular/core
会被识别,而不是notifications
?
我在写这个问题时找到了答案。我会把它发布为Q& A,因为其他人可能觉得它很有用。
答案 0 :(得分:2)
这是因为@angular/core
是实际的文件夹名称,而notifications
不是(它叫做angular2-notifications)。 IntelliJ / Webstorm对SystemJs一无所知。解决此问题的简单方法是更改SystemJs中的映射以使用与文件夹相同的名称。在这种情况下:
var map = {
'app': '/ng2experiments/app', // 'dist',
'@angular': '/ng2experiments/node_modules/@angular',
'angular2-in-memory-web-api': '/ng2experiments/node_modules/angular2-in-memory-web-api',
'rxjs': '/ng2experiments/node_modules/rxjs',
'angular2-notifications': '/ng2experiments/node_modules/angular2-notifications'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
'angular2-notifications': { main: 'components.js', defaultExtension: 'js' }
};
IntelliJ / Webstorm应该开箱即可查看所有文件夹名称,然后识别模块: