68 votes

Erreur TypeScript dans le code Angular2: impossible de trouver le nom 'module'

J'ai défini le suivant Angular2 composant:

import {Component} from 'angular2/core';

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

Lorsque j'essaie de compiler ceci, j'obtiens le message d'erreur suivant sur la ligne 5:

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

Je crois module.id est en se référant à la CommonJS module variable (voir ici). J'ai spécifié le CommonJS système de module dans le 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
}

Comment puis-je corriger le Tapuscrit d'erreur?

102voto

yurzui Points 85802

Mise à jour

Si vous utilisez la Machine 2^ suffit d'utiliser la commande suivante:

npm i @types/node --save-dev

(au lieu de --save-dev vous pouvez simplement utiliser les raccourcis -D)

ou de l'installer dans le monde entier:

npm i @types/node --global

Vous pouvez également spécifier typeRoots ou types dans votre tsconfig.json si vous voulez, mais par défaut, tous visibles "@" types de paquets sont inclus dans la compilation.

Ancienne version

Vous devez installer le nœud ambientDependencies. Typings.json

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

Une autre façon peut utiliser typings manager pour installer nœud fichier de définition à l'échelle mondiale:

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

Ensuite, votre typings.fichier json ressemblera à ceci:

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

48voto

Isaac Points 1423

Pour ceux qui cherchent à le faire avec la Machine 2.x et @types, voici ce que vous devez faire:

  1. npm install -D @types/node
  2. Comprennent types: ["node"] sous compilerOptions votre tsconfig.json le fichier.

J'ai eu un moment difficile de trouver les instructions de l'étape 2.

Référence: Tapuscrit question 9184

Edit:

Vous pouvez aussi faire:

  1. Comprennent "typeRoots": [ "node_modules/@types" ] sous compilerOptions votre tsconfig.json le fichier. C'est à la place de l' types de la propriété et a l'avantage de automatiquement, y compris tout @types vous installer avec npm.

Par exemple:

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

[Deuxième édition] Apparemment, la dernière tapuscrit, vous avez seulement besoin d' typeRoots ou types si tsconfig.json n'est pas à la racine de votre projet ou de votre types ne sont pas stockés dans node_modules/@types.

15voto

TDP Points 574

J'ai rencontré cette erreur lors du transfert de mon projet Quickstart @ angular / angular2 dans un nouveau projet généré automatiquement par clular angular.

Il semble que moduleId: module.id ne soit plus nécessaire.

Voici le dernier composant généré automatiquement:

 import { Component } from '@angular/core';

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

Supprimer toutes les occurrences a résolu mes erreurs.

11voto

asdf_enel_hak Points 2041

Au lieu de "ambient", essayez "global" par Typings 1.0

 typings install dt~node --global --save
 

3voto

Klaus Points 1023

Les deux points principaux:

  1. Registre typings en exécutant typings install dt~node --global --save. Ainsi, vous obtiendrez la section suivante en typings.json:

    "globalDependencies": {
        "node": "registry:dt/node#6.0.0+20160608110640"
    }
    
  2. Ajouter la référence pour le nouveau module. De deux façons:

    • Directement ajouter une référence à une dépendance dans votre TS

      /// <reference path="../../../typings/globals/node/index.d.ts" />

    • Ajouter typings/index.d.ts dans la files de la section de l' tsconfig.json

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

Voir plus ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X