2016-05-27 37 views
13

ho seguito l'angular2 quick start per creare il mio progetto e tutto funziona bene, ma la mia linea di comando "TSC -w" continua a dirmi:angular2: Impossibile trovare il modulo '@ angolare/core'

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'. 

E c'è è un sacco di altre linee come questa. Tuttavia, tutto è compilato con successo e la mia applicazione funziona bene, ma è abbastanza fastidioso avere tutti questi avvisi/errori come errori reali, qualcosa si perde nel mezzo di essi.

Sto utilizzando Angular2 rc1, TypeScript 1.8.10, WebStorm EAP (anche se non sto utilizzando il sistema di compilazione di tipo WebStorm, sto facendo affidamento su un terminale aperto con la riga di comando "tsc -w").

Ho controllato altre domande relative a questo in SO, ma non ho trovato nulla che mi abbia veramente aiutato.

Aggiornamento

Ecco il mio file tsconfig.json:

{ 
    "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

Bene ... Apparentemente, questo file è già stato modificato nella guida rapida da quando ho creato il mio progetto. Nelle mie digitazioni, ho solo "es6-shim", "jasmine" e "node". Tuttavia, vedo che ora, nella guida rapida, "es6-shim" è stato sostituito da "core-js", ma ho la sensazione che non risolverà il mio problema (mi sbaglio?). Inoltre, la soluzione proposta da "Thierry Templier" funziona. Grazie – ssougnez

risposta

16

si dovrebbe usare il moduleResolution attributo per 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

Sembra davvero meglio. Potresti semplicemente spiegarmi in due parole cosa cambia? – ssougnez

+1

È il modo in cui il compilatore troverà i file 'd.ts' per i contratti delle librerie. Vedi questa domanda: http://stackoverflow.com/questions/37413533/what-is-the-purpose-of-tsconfig-json/37413595#37413595. –

+9

In qualche modo il mio editor ha ancora 'Impossibile trovare il modulo '@ angular/core'', anche se questo è in' src/'tsconfig? – PascalVKooten

4

Innanzitutto è necessario aggiungere tipizzazioni a livello globale livello come di seguito.

npm install -g typings 

Quindi creare typings.json utilizzando il comando di seguito.

typings init 

Incolla sotto il codice a 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" 
    } 
} 

Ora è necessario aggiungere il codice qui sotto in tsconfig.json

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

Dopo aver fatto operazioni di cui sopra sarà in grado di ottenere le definizioni su F12.

Problemi correlati