Search code examples
typescriptangularcommonjs

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?


Solution

  • 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"
    }