web-dev-qa-db-fra.com

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

J'ai défini le composant Angular2 suivant:

import {Component} from 'angular2/core';

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

Lorsque j'essaie de compiler cela, l'erreur suivante apparaît sur la ligne 5:

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

Je crois que module.id fait référence à la variable CommonJS module (voir ici ). J'ai spécifié le système de module CommonJS dans 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 l'erreur TypeScript?

60
Naresh

Mettre à jour 

Si vous utilisez TypeScript 2 ^ utilisez simplement la commande suivante:

npm i @types/node --save-dev

(au lieu de --save-dev, vous pouvez simplement utiliser le raccourci -D)

ou l'installer globalement:

npm i @types/node --global

Vous pouvez également spécifier typeRoots ou types dans votre tsconfig.json si vous le souhaitez, mais par défaut, tous les packages “@types” visibles sont inclus dans votre compilation

Ancienne version

Vous devez installer le noeud ambientDependencies. Typings.json

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

Une autre manière peut utiliser typings manager pour installer le fichier de définition de noeud globalement:

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

Ensuite, votre fichier typings.json ressemblera à ceci:

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

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

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

J'ai eu du mal à trouver les instructions pour l'étape 2.

Référence: TypeScript numéro 9184

Modifier:

Vous pouvez aussi faire:

  1. Incluez "typeRoots": [ "node_modules/@types" ] sous compilerOptions dans votre fichier tsconfig.json. Ceci remplace la propriété types et présente l'avantage d'inclure automatiquement tout @types que vous installez avec npm.

Par exemple:

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

[Deuxième édition]Apparemment , avec le dernier TypeScript, vous avez uniquement besoin de typeRoots ou types si tsconfig.json n'est pas à la racine de votre projet ou si vos types ne sont pas stockés dans node_modules/@types.

43
Isaac

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

typings install dt~node --global --save
11
asdf_enel_hak

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.

8
TDP

Deux points clés:

  1. Enregistrez les saisies en exécutant typings install dt~node --global --save. Donc, vous aurez la section suivante dans typings.json:

    "globalDependencies": {
        "node": "registry:dt/node#6.0.0+20160608110640"
    }
    
  2. Ajouter une référence au nouveau module. Deux manières:

    • Ajoutez directement une référence à une dépendance dans votre TS 

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

    • Ajoutez typings/index.d.ts dans la section files du tsconfig.json

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

Voir plus ici .

3
Alex Klaus

J'utilise VS 2015 et j'ai eu les mêmes problèmes, mais j'ai résolu l'utilisation de:

  1. ajoutez le fichier typings.json du site Web angular.io (version 2.0.0 finale pour le moment) et la course:

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

puis

npm install -D @types/node --save

dans le package.json j'ai 

"devDependencies": {
"@types/node": "6.0.40",
...
  1. dans le typings.json j'ai la configuration suivante

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

Je devais ajouter les types sous forme de tableau vide

  1. recherchez les doublons et si moduleId: module.id est toujours en surbrillance

p.s. Pour moi, la question est étrange, car dès que vous excluez les saisies dans typings.json, vous avez immédiatement mis en surbrillance 'module', mais si vous le laissez entrer, vous avez beaucoup de doublons. Je ne sais pas qui blâmer, moi, TypeScript ou Visual Studio :)

1
Leon

J'ai installé dans le projet et j'ai bien travaillé

npm install @types/node --save
0
osmarpetry

Pour moi, j'avais un tsconfig.app.json étendu tsconfig.json. Ainsi, lorsque j'ai ajouté "types": ["node"] dans tsconfig.json, il était remplacé par la propriété "types" dans tsconfig.app.json. L'ajout de "noeud" à la propriété "types" existante dans tsconfig.app.config l'a corrigé.

0
adam0101

module.id 

ne trouve pas le nom du module.

Suivez les étapes suivantes pour résoudre ce problème,

étape 1: Installez le module de noeud à l'aide de la commande ci-dessous

npm i @types/node --save

Étape 2: modifiez le fichier tsconfig.app.json sous src/app

"types": [
    "node"
]
0
Sathish Kumar

C'est ce que j'ai fait qui a fonctionné pour moi sur Eclipse (Webclipse)/Windows.

Étape 1:

Terminal

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

Étape 2:

tsconfig.json

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

De plus, j'avais les dépendances suivantes dans mon package.json, j'utilisais donc TypeScript 2.

  "devDependencies": {
    ...
    "TypeScript": "~2.0.10",
    "@types/node": "^6.0.46",
    ...
  },
0
Kin Cheung