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?
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"
}
Pour ceux qui cherchent à faire cela avec TypeScript 2.x et @types, voici ce que vous devez faire:
npm install -D @types/node
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:
"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
.
Au lieu de "ambient", essayez "global" par Typings 1.0
typings install dt~node --global --save
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.
Deux points clés:
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"
}
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 .
J'utilise VS 2015 et j'ai eu les mêmes problèmes, mais j'ai résolu l'utilisation de:
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",
...
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
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 :)
J'ai installé dans le projet et j'ai bien travaillé
npm install @types/node --save
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é.
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"
]
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",
...
},