2016-06-08 7 views
0

Ich verstehe nicht, wie ich IntelliJ verstehen, dass meine Bibliothek mit SystemJS zugeordnet wurde. So bekomme ich eine rote Wellenlinie unter meinem Import, wie das folgende Bild zeigt:IntelliJ (oder Webstorm) erkennt keine Importe von SystemJs

intellij-error

Jedoch wird das Modul korrekt geladen und ich kann es verwenden, das heißt die Website funktioniert. Die @angular/core scheint zu erkennen. Ich verwende die folgende Abbildung in 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' } 
}; 

Warum ist es @angular/core erkannt wird, aber nicht notifications?

Ich fand die Antwort beim Schreiben der Frage. Ich poste es trotzdem als Q & A, weil andere Leute es nützlich finden könnten.

+0

Ich habe das gleiche Problem und habe mich gefragt, ob hast du das jemals funktioniert, ohne die Namen zu finden? – james

Antwort

2

Es ist, weil @angular/core der tatsächliche Ordnername ist, während notifications nicht ist (es heißt angular2-Benachrichtigungen). IntelliJ/Webstorm weiß nichts über SystemJs. Eine einfache Möglichkeit, dies zu lösen, besteht darin, die Zuordnung in SystemJs so zu ändern, dass sie den gleichen Namen wie Ihr Ordner verwendet. In diesem Fall:

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 sollte für alle Ordnernamen der Box überprüfen, so erkennt er dann das Modul:

intellij solved

+0

Sie können auch typescript @ next (1.9) mit Pfadzuordnungen statt – anstarovoyt

+0

Danke für den Hinweis, können Sie vielleicht ein wenig ausarbeiten? – bersling