TypeScript error in Angular2 code: Cannot find name 'module'
I have defined the following Angular2 component:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
moduleId: module.id,
templateUrl: './app.component.html'
})
export class AppComponent {
}
When I try to compile this, I get the following error on line 5:
src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'.
I believe module.id is referring to the CommonJS module
variable (see here). I have specified the CommonJS module system 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
}
How can I correct the TypeScript error?
Update
If you use Typescript 2^ just use the following command:
npm i @types/node --save-dev
(instead of --save-dev
you can just use shortcut -D
)
or install it globally:
npm i @types/node --global
You can also specify typeRoots
or types
in your tsconfig.json if you want but by default all visible “@types” packages are included in your compilation.
Old version
You need to install node ambientDependencies. Typings.json
"ambientDependencies": {
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
Another way can use typings manager to install node definition file globally:
typings install dt~node --global --save-dev
Then your typings.json file will look like this:
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160608110640"
}
For those looking to do this with Typescript 2.x and @types, here's what you need to do:
npm install -D @types/node
- Include
types: ["node"]
undercompilerOptions
in yourtsconfig.json
file.
I had a tough time finding the instructions for step 2.
Reference: Typescript issue 9184
Edit:
You could also do:
- Include
"typeRoots": [ "node_modules/@types" ]
undercompilerOptions
in yourtsconfig.json
file. This is instead of thetypes
property and has the benefit of automatically including any@types
you install with npm.
For example:
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
[Second edit]
Apparently, with the latest typescript, you only need typeRoots
or types
if tsconfig.json
is not in the root of your project or your types are not stored in node_modules/@types
.
I hit this error when porting my @angular/angular2 Quickstart project into a new angular cli auto-generated project.
It seems that moduleId: module.id
isn't needed anymore.
This is the latest auto-generated component:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
}
Removing all occurances resolved my errors.
Instead of "ambient" try "global" by Typings 1.0
typings install dt~node --global --save