Errore TypeScript nel codice Angular2: imansible trovare il nome ‘module’

Ho definito il seguente componente Angular2:

import {Component} from 'angular2/core'; @Component({ selector: 'my-app', moduleId: module.id, templateUrl: './app.component.html' }) export class AppComponent { } 

Quando provo a compilarlo, ottengo il seguente errore sulla riga 5:

 src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'. 

Credo che module.id si riferisca alla variabile del module CommonJS (vedi qui ). Ho specificato il sistema del modulo CommonJS in tsconfig.json:

 { "compilerOptions": { "target": "es5", "module": "commonjs", "declaration": false, "removeComments": true, "noLib": false, "emitDecoratorMetadata": true, "experimentalDecorators": true, "sourceMap": true, "pretty": true, "allowUnreachableCode": false, "allowUnusedLabels": false, "noImplicitAny": true, "noImplicitReturns": true, "noImplicitUseStrict": false, "noFallthroughCasesInSwitch": true }, "exclude": [ "node_modules", "dist", "typings/browser.d.ts", "typings/browser", "src" ], "compileOnSave": false } 

Come posso correggere l’errore TypeScript?

    Aggiornare

    Se usi Typescript 2 ^ usa il seguente comando:

     npm i @types/node --save-dev 

    (invece di --save-dev puoi usare solo scorciatoia -D )

    o installarlo globalmente:

     npm i @types/node --global 

    Puoi anche specificare typeRoots o types nel tuo tsconfig.json se vuoi, ma per impostazione predefinita tutti i pacchetti visibili “@types” sono inclusi nella tua compilation .

    Vecchia versione

    È necessario installare il nodo ambientDependencies. Typings.json

     "ambientDependencies": { "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2", 

    Un altro modo può utilizzare il gestore delle tipizzazioni per installare globalmente il file di definizione del nodo:

     typings install dt~node --global --save-dev 

    Quindi il tuo file typings.json sarà simile a questo:

     "globalDependencies": { "node": "registry:dt/node#6.0.0+20160608110640" } 

    Per coloro che cercano di farlo con Typescript 2.xe @types, ecco cosa devi fare:

    1. npm install -D @types/node
    2. Includi types: ["node"] sotto compilerOptions nel tuo file tsconfig.json .

    Ho avuto difficoltà a trovare le istruzioni per il passaggio 2.

    Riferimento: numero 9184 di Typescript

    Modificare:

    Potresti anche fare:

    1. Includi "typeRoots": [ "node_modules/@types" ] in compilerOptions nel tuo file tsconfig.json . Questo è al posto della proprietà types e ha il vantaggio di includere automaticamente qualsiasi @types che installi con npm.

    Per esempio:

     { "compilerOptions": { "typeRoots": [ "node_modules/@types" ] } } 

    [Seconda modifica] Apparentemente , con l’ultimo typescript, hai solo bisogno di typeRoots o types se tsconfig.json non è nella root del tuo progetto o i tuoi tipi non sono memorizzati in node_modules/@types .

    Invece di “ambient” prova “global” con Typings 1.0

     typings install dt~node --global --save 

    Ho riscontrato questo errore durante il porting del mio progetto Quickstart @ angular / angular2 in un nuovo progetto generato automaticamente dall’utente angular.

    Sembra che moduleId: module.id non sia più necessario.

    Questo è l’ultimo componente generato automaticamente:

     import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'app works!'; } 

    La rimozione di tutte le occorrenze ha risolto i miei errori.

    Due punti chiave:

    1. Registrare i tipi digitando typings install dt~node --global --save . Quindi otterrai la seguente sezione in typings.json :

       "globalDependencies": { "node": "registry:dt/node#6.0.0+20160608110640" } 
    2. Aggiungi riferimento al nuovo modulo. Due strade:

      • Aggiungi direttamente un riferimento a una dipendenza nel tuo TS

        ///

      • Aggiungi typings/index.d.ts nella sezione files di tsconfig.json

         { "files": [ "typings/index.d.ts" ] } 

    Vedi di più qui .

    Uso VS 2015 e ho avuto gli stessi problemi, ma ho risolto l’utilizzo di:

    1. aggiungi il file typings.json dal sito angular.io (2.0.0 finale al momento) e la corsa:

       typings install // don't forget to install typings globally 

    poi

     npm install -D @types/node --save 

    nel package.json che ho

     "devDependencies": { "@types/node": "6.0.40", ... 
    1. nel typings.json ho la seguente configurazione

       { "compilerOptions": { "target": "es5", "module":"commonjs", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": true, "noImplicitAny": true, "suppressImplicitAnyIndexErrors": true, "allowSyntheticDefaultImports": true, "types": [] }, "exclude": [ "node_modules", "app-dist" ] } 

    Ho dovuto aggiungere i tipi come array vuoto

    1. verificare la presenza di duplicati e se moduleId: module.id è ancora evidenziato

    ps per me è uno strano problema, perché non appena si esclude la digitazione in typings.json, si è immediatamente evidenziato ‘module’, ma se lo si lascia entrare, si hanno molti duplicati. Non so chi dare la colpa, io, typescript o studio visivo 🙂

    Questo è quello che ho fatto per me su Eclipse (Webclipse) / Windows.

    Passo 1:

    terminale

     $ npm install @types/node --global --save 

    Passo 2:

    tsconfig.json

     { "compilerOptions": { ..., "types": ["node"] } } 

    Inoltre, ho avuto le seguenti dipendenze nel mio package.json, quindi stavo usando typescript 2.

      "devDependencies": { ... "typescript": "~2.0.10", "@types/node": "^6.0.46", ... }, 

    Ho installato il progetto e ho lavorato bene

     npm install @types/node --save