2016-05-27 11 views
13

Ich folgte die angular2 quick start mein Projekt zu erstellen und alles funktioniert gut, aber meine „tsc -w“ Befehlszeile hält mich auf zu sagen:angular2: Kann nicht Modul finden ‚@ Winkel/Kern‘

app/components/company/company.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/company/company.ts(5,22): error TS2307: Cannot find module '@angular/router'. 
app/components/mission/mission.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/mission/mission.ts(3,22): error TS2307: Cannot find module '@angular/router'. 

Und es ist viel andere Linie wie folgt. Jedoch ist alles erfolgreich kompiliert und meine Anwendung funktioniert gut, aber es ist ziemlich ärgerlich, all diese Warnungen/Fehler als echte Fehler zu haben, die in der Mitte von ihnen verloren gehen.

Ich benutze Angular2 rc1, TypeScript 1.8.10, WebStorm EAP (obwohl ich nicht das WebStorm TypeScript-Kompilierungssystem verwende, verlasse ich mich auf ein offenes Terminal mit der Befehlszeile "tsc -w").

Ich überprüfte andere Fragen im Zusammenhang mit SO, aber ich habe nichts gefunden, was mir wirklich geholfen hat.

aktualisieren

Hier ist meine tsconfig.json Datei:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Nun ... Anscheinend hat sich diese Datei schon im Schnellstart geändert, seit ich mein Projekt erstellt habe. In meinen Typings habe ich nur "es6-shim", "Jasmine" und "node". Ich sehe jedoch, dass "es6-shim" jetzt durch "core-js" ersetzt wird, aber ich habe das Gefühl, dass es mein Problem nicht lösen wird (liege ich falsch?). Außerdem funktioniert die von "Thierry Templier" vorgeschlagene Lösung. Danke – ssougnez

Antwort

16

sollten Sie die Verwendung moduleResolution Attribut node:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "moduleResolution": "node", // <----- 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Es scheint tatsächlich viel besser. Kannst du mir einfach in zwei Worten erklären, was es verändert? – ssougnez

+1

Es ist die Art, wie der Compiler die 'd.ts' Dateien für Verträge von Bibliotheken findet. Siehe diese Frage: http://stackoverflow.com/questions/37413533/what-is-the-purpose-of-tsconfig-json/37413595#37413595. –

+9

Irgendwie hat mein Editor immer noch 'Kann Modul '@ angular/core' nicht finden, obwohl dies in der' src/'tsconfig? – PascalVKooten

4

Als erstes müssen Sie Typisierungen auf globaler hinzufügen Niveau wie unten.

npm install -g typings 

Dann erstellen Sie typings.json mit dem Befehl unten.

typings init 

Paste Code unten in typings.json

{ 
    "name": "ng2-application", 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160725163759", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "node": "registry:dt/node#6.0.0+20160909174046" 
    } 
} 

Nun müssen Sie unter Code in tsconfig.json

"compilerOptions": { 
     "moduleResolution": "node" 
     } 

Nachdem ich obigen Schritte hinzufügen können Sie auf Definitionen erhalten F12.

Verwandte Themen