Angular2代码中的TypeScript错误:找不到名称'module'

Nar*_*esh 63 commonjs typescript angular

我定义了以下Angular2组件:

import {Component} from 'angular2/core';

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

当我尝试编译它时,我在第5行得到以下错误:

src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'.
Run Code Online (Sandbox Code Playgroud)

我相信module.id指的是CommonJS module变量(见这里).我在tsconfig.json中指定了CommonJS模块系统:

{
  "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
}
Run Code Online (Sandbox Code Playgroud)

如何更正TypeScript错误?

yur*_*zui 96

更新

如果您使用Typescript 2 ^,只需使用以下命令:

npm i @types/node --save-dev
Run Code Online (Sandbox Code Playgroud)

(而不是--save-dev你可以只使用快捷方式-D)

或全局安装:

npm i @types/node --global
Run Code Online (Sandbox Code Playgroud)

您还可以指定typeRoots或者types在您的tsconfig.json如果你想,但在默认情况下所有可见"@types"包包含在你的汇编.

旧版

您需要安装节点ambientDependencies.Typings.json

"ambientDependencies": {
    "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
Run Code Online (Sandbox Code Playgroud)

另一种方法可以使用typings manager全局安装节点定义文件:

typings install dt~node --global --save-dev
Run Code Online (Sandbox Code Playgroud)

然后你的typings.json文件将如下所示:

"globalDependencies": {
  "node": "registry:dt/node#6.0.0+20160608110640"
}
Run Code Online (Sandbox Code Playgroud)

  • 两点:1.记住将引用添加到根打字稿文件的顶部,这样:/// <reference path ="../../ typings/main/ambient/node/index.d.ts"/> 2.编辑如@yurzui所示的typings.json文件为我工作但最初我只是这样做:> typings安装节点--ambient --save哪个更新了typings.json文件[使用不同的版本]而没有当index.d.ts文件在转换时抛出大量错误.仅供参考:我正在使用Angular Beta.16 (4认同)
  • 命令`npm install @ types/node --save`为我修复了这个问题 (2认同)
  • `npm install @ types/node --save`对我来说已经足够了. (2认同)
  • 类型应该是devDependencies,因为它们被TypeScript用于类型检查和转换,因此它们应该使用`npm install -D @ types/node`来安装,因为它们不在转换后的代码中使用. (2认同)

Isa*_*aac 45

对于那些希望使用Typescript 2.x和@types执行此操作的人,这是您需要做的:

  1. npm install -D @types/node
  2. 包括types: ["node"]compilerOptions你的tsconfig.json文件中.

我很难找到第2步的说明.

参考:打字稿问题9184

编辑:

你也可以这样做:

  1. 包括"typeRoots": [ "node_modules/@types" ]compilerOptions你的tsconfig.json文件中.这不是types属性,而是自动包含@types你用npm安装的任何好处.

例如:

{
  "compilerOptions": {
    "typeRoots": [
      "node_modules/@types"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

[第二编辑] 显然,与最新的打字稿,你只需要typeRoots或者types如果tsconfig.json不是在你的项目的根目录或您的类型不存储在node_modules/@types.

  • 非常感谢第2步!用这个抨击了我几天. (2认同)

TDP*_*TDP 13

将@ angular/angular2 Quickstart项目移植到新的angular cli自动生成项目时,我遇到了这个错误.

似乎moduleId: module.id不再需要了.

这是最新的自动生成组件:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app works!';
}
Run Code Online (Sandbox Code Playgroud)

删除所有出现都解决了我的错误.


asd*_*hak 11

不是"环境"而是通过Typings 1.0尝试"全局"

typings install dt~node --global --save
Run Code Online (Sandbox Code Playgroud)


小智 6

module.id

找不到名称模块。

请按照以下步骤解决此问题,

第 1 步:使用以下命令安装节点模块

npm i @types/node --save
Run Code Online (Sandbox Code Playgroud)

第2步:修改文件tsconfig.app.jsonsrc/app

"types": [
    "node"
]
Run Code Online (Sandbox Code Playgroud)