ts2307 - Error de TypeScript en el código Angular2: no se puede encontrar el nombre ''módulo''
no se encuentra el módulo ''@ angular platform browser (10)
He definido el siguiente componente Angular2:
import {Component} from ''angular2/core'';
@Component({
selector: ''my-app'',
moduleId: module.id,
templateUrl: ''./app.component.html''
})
export class AppComponent {
}
Cuando intento compilar esto, aparece el siguiente error en la línea 5:
src/app/app.component.ts(5,13): error TS2304: Cannot find name ''module''.
Creo que module.id se refiere a la variable de
module
CommonJS (ver
here
).
He especificado el sistema de módulos CommonJS en 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
}
¿Cómo puedo corregir el error de TypeScript?
Dos puntos clave:
-
Registre tipings ejecutando
typings install dt~node --global --save
. Entonces obtendrá la siguiente sección entypings.json
:"globalDependencies": { "node": "registry:dt/node#6.0.0+20160608110640" }
-
Añadir referencia al nuevo módulo. Dos caminos:
-
Agregue directamente una referencia a una dependencia en su TS
/// <reference path="../../../typings/globals/node/index.d.ts" />
-
Agregue
typings/index.d.ts
en la sección defiles
detsconfig.json
{ "files": [ "typings/index.d.ts" ] }
-
Ver más here .
En lugar de "ambiente" intente "global" por Typings 1.0
typings install dt~node --global --save
Esto es lo que hice que funcionó para mí en Eclipse (Webclipse) / Windows.
Paso 1:
Terminal
$ npm install @types/node --global --save
Paso 2:
tsconfig.json
{
"compilerOptions": {
...,
"types": ["node"]
}
}
Además, tenía las siguientes dependencias en mi package.json, así que estaba usando el mecanografiado 2.
"devDependencies": {
...
"typescript": "~2.0.10",
"@types/node": "^6.0.46",
...
},
Llegué a este error al portar mi proyecto de inicio rápido @ angular / angular2 en un nuevo proyecto autogenerado angular cli.
Parece que
moduleId: module.id
ya no es necesario.
Este es el último componente autogenerado:
import { Component } from ''@angular/core'';
@Component({
selector: ''app-root'',
templateUrl: ''./app.component.html'',
styleUrls: [''./app.component.css'']
})
export class AppComponent {
title = ''app works!'';
}
Eliminar todas las ocurrencias resolvió mis errores.
Lo instalé en el proyecto y trabajé bien
npm install @types/node --save-dev
Para aquellos que buscan hacer esto con Typecript 2.xy @types, esto es lo que debe hacer:
-
npm install -D @types/node
-
Incluya
types: ["node"]
encompilerOptions
en su archivotsconfig.json
.
Me costó mucho encontrar las instrucciones para el paso 2.
Referencia: mecanografiado número 9184
Editar:
También puedes hacer:
-
Incluya
"typeRoots": [ "node_modules/@types" ]
encompilerOptions
en su archivotsconfig.json
. Esto es en lugar de la propiedad detypes
y tiene la ventaja de incluir automáticamente cualquier tipo@types
que instale con npm.
Por ejemplo:
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
[Segunda edición]
Apparently
, con el último mecanografiado, solo necesita
typeRoots
o
types
si
tsconfig.json
no está en la raíz de su proyecto o sus tipos no están almacenados en
node_modules/@types
.
Para mí, tenía un
tsconfig.app.json
que extendía
tsconfig.json
.
Entonces, cuando agregué
"types": ["node"]
en
tsconfig.json
, estaba siendo anulado por la propiedad "tipos" en
tsconfig.app.json
.
Agregar "nodo" a la propiedad existente de "tipos" en
tsconfig.app.config
arregló.
Uso VS 2015 y tuve los mismos problemas, pero he resuelto usar:
-
agregue el archivo typings.json del sitio web angular.io (2.0.0 final en este momento) y ejecute:
typings install // don''t forget to install typings globally
entonces
npm install -D @types/node --save
en el package.json tengo
"devDependencies": {
"@types/node": "6.0.40",
...
-
en typings.json tengo la siguiente configuración
{ "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" ] }
Tuve que agregar los tipos como una matriz vacía
- compruebe si hay duplicados y si moduleId: module.id todavía está resaltado
Personalmente, ps para mí es un problema extraño, porque tan pronto como excluyes los tipos dentro de typings.json, inmediatamente has resaltado ''módulo'', pero si lo dejas entrar, tienes muchos duplicados. No sé a quién culpar, a mí, mecanografiado o estudio visual :)
module.id
No se puede encontrar el módulo de nombre.
Siga los siguientes pasos para resolver este problema,
Paso 1: Instale el módulo de nodo utilizando el siguiente comando
npm i @types/node --save
Paso 2: modifique el archivo
tsconfig.app.json
en
src/app
"types": [
"node"
]
Actualizar
Si usa Typecript 2 ^ simplemente use el siguiente comando:
npm i @types/node --save-dev
(en lugar de
--save-dev
puedes usar el atajo
-D
)
o instalarlo globalmente:
npm i @types/node --global
También puede especificar
typeRoots
o
types
en su tsconfig.json si lo desea, pero
por defecto todos los paquetes visibles "@types" están incluidos en su compilación
.
Versión antigua
Necesita instalar el nodo ambientDependencies. Typings.json
"ambientDependencies": {
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
Otra forma puede usar el administrador de typings para instalar el archivo de definición de nodo globalmente:
typings install dt~node --global --save-dev
Entonces su archivo typings.json se verá así:
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160608110640"
}