Angular2 代码中的 TypeScript 错误:找不到名称 'module'
TypeScript error in Angular2 code: Cannot find name 'module'
我定义了以下 Angular2 组件:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
moduleId: module.id,
templateUrl: './app.component.html'
})
export class AppComponent {
}
当我尝试编译它时,在第 5 行出现以下错误:
src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'.
我相信 module.id 指的是 CommonJS module
变量(参见 here)。我在 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
}
如何更正 TypeScript 错误?
更新
如果您使用 Typescript 2^ 只需使用以下命令:
npm i @types/node --save-dev
(而不是 --save-dev
你可以只使用快捷方式 -D
)
或全局安装:
npm i @types/node --global
如果需要,您也可以在 tsconfig.json 中指定 typeRoots
或 types
,但 by default all visible “@types” packages are included in your compilation。
旧版本
您需要安装node ambientDependencies。 Typings.json
"ambientDependencies": {
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
另一种方法可以使用typings管理器全局安装节点定义文件:
typings install dt~node --global --save-dev
那么您的 typings.json 文件将如下所示:
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160608110640"
}
尝试使用 Typings 1.0
"global" 而不是 "ambient"
typings install dt~node --global --save
两个关键点:
通过 运行 typings install dt~node --global --save
注册打字。因此,您将在 typings.json
中看到以下部分:
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160608110640"
}
添加对新模块的引用。两种方式:
在您的 TS 中直接添加对依赖项的引用
/// <reference path="../../../typings/globals/node/index.d.ts" />
在 tsconfig.json
的 files
部分添加 typings/index.d.ts
{
"files": [
"typings/index.d.ts"
]
}
查看更多here.
对于那些希望使用 Typescript 2.x 和 @types 执行此操作的人,这是您需要做的:
npm install -D @types/node
- 在
tsconfig.json
文件的 compilerOptions
下包含 types: ["node"]
。
我很难找到第 2 步的说明。
编辑:
你也可以这样做:
- 在
tsconfig.json
文件的 compilerOptions
下包含 "typeRoots": [ "node_modules/@types" ]
。这不是 types
属性 并且具有自动包含您使用 npm 安装的任何 @types
的好处。
例如:
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
[第二次编辑]
Apparently,使用最新的打字稿,如果 tsconfig.json
不在项目的根目录中或者您的类型未存储在 [=23= 中,则只需要 typeRoots
或 types
].
我使用 VS 2015,遇到了同样的问题,但我已经解决了:
添加来自 angular.io 网站的 typings.json 文件(目前为 2.0.0 最终版本)和 运行:
typings install // don't forget to install typings globally
然后
npm install -D @types/node --save
在 package.json 我有
"devDependencies": {
"@types/node": "6.0.40",
...
在typings.json我有如下配置
{
"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"
]
}
我必须将类型添加为空数组
- 检查重复项,如果 moduleId: module.id 仍然突出显示
p.s。对我个人来说这是一个奇怪的问题,因为一旦你排除了 typings.json 中的输入,你就立即突出显示了 'module',但是如果你让它进入,你就会有很多重复。不知道该怪谁,我,打字稿或 visual studio :)
这就是我在 Eclipse(Webclipse)/Windows.
上为我所做的工作
第 1 步:
航站楼
$ npm install @types/node --global --save
第 2 步:
tsconfig.json
{
"compilerOptions": {
...,
"types": ["node"]
}
}
此外,我的 package.json 中有以下依赖项,所以我使用的是 typescript 2。
"devDependencies": {
...
"typescript": "~2.0.10",
"@types/node": "^6.0.46",
...
},
我在项目中安装,运行良好
npm install @types/node --save-dev
我在将我的@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!';
}
删除所有事件解决了我的错误。
module.id
找不到名称模块。
按照以下步骤解决此问题,
第 1 步:使用以下命令安装节点模块
npm i @types/node --save
第二步:修改src/app
下的文件tsconfig.app.json
"types": [
"node"
]
对我来说,我有一个 tsconfig.app.json
扩展 tsconfig.json
。所以当我在 tsconfig.json
中添加 "types": ["node"]
时,它被 tsconfig.app.json
中的 "types" 属性 覆盖了。将 "node" 添加到 tsconfig.app.config
中现有的 "types" 属性 修复了它。
直到我将其粘贴到组件顶部 module.id 的位置之前,它仍然无法正常工作。像这样
declare var module: NodeModule;
interface NodeModule
{
id: string;
}
@Component({module.id})
我定义了以下 Angular2 组件:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
moduleId: module.id,
templateUrl: './app.component.html'
})
export class AppComponent {
}
当我尝试编译它时,在第 5 行出现以下错误:
src/app/app.component.ts(5,13): error TS2304: Cannot find name 'module'.
我相信 module.id 指的是 CommonJS module
变量(参见 here)。我在 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
}
如何更正 TypeScript 错误?
更新
如果您使用 Typescript 2^ 只需使用以下命令:
npm i @types/node --save-dev
(而不是 --save-dev
你可以只使用快捷方式 -D
)
或全局安装:
npm i @types/node --global
如果需要,您也可以在 tsconfig.json 中指定 typeRoots
或 types
,但 by default all visible “@types” packages are included in your compilation。
旧版本
您需要安装node ambientDependencies。 Typings.json
"ambientDependencies": {
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#138ad74b9e8e6c08af7633964962835add4c91e2",
另一种方法可以使用typings管理器全局安装节点定义文件:
typings install dt~node --global --save-dev
那么您的 typings.json 文件将如下所示:
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160608110640"
}
尝试使用 Typings 1.0
"global" 而不是 "ambient"typings install dt~node --global --save
两个关键点:
通过 运行
typings install dt~node --global --save
注册打字。因此,您将在typings.json
中看到以下部分:"globalDependencies": { "node": "registry:dt/node#6.0.0+20160608110640" }
添加对新模块的引用。两种方式:
在您的 TS 中直接添加对依赖项的引用
/// <reference path="../../../typings/globals/node/index.d.ts" />
在
的tsconfig.json
files
部分添加typings/index.d.ts
{ "files": [ "typings/index.d.ts" ] }
查看更多here.
对于那些希望使用 Typescript 2.x 和 @types 执行此操作的人,这是您需要做的:
npm install -D @types/node
- 在
tsconfig.json
文件的compilerOptions
下包含types: ["node"]
。
我很难找到第 2 步的说明。
编辑:
你也可以这样做:
- 在
tsconfig.json
文件的compilerOptions
下包含"typeRoots": [ "node_modules/@types" ]
。这不是types
属性 并且具有自动包含您使用 npm 安装的任何@types
的好处。
例如:
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
[第二次编辑]
Apparently,使用最新的打字稿,如果 tsconfig.json
不在项目的根目录中或者您的类型未存储在 [=23= 中,则只需要 typeRoots
或 types
].
我使用 VS 2015,遇到了同样的问题,但我已经解决了:
添加来自 angular.io 网站的 typings.json 文件(目前为 2.0.0 最终版本)和 运行:
typings install // don't forget to install typings globally
然后
npm install -D @types/node --save
在 package.json 我有
"devDependencies": {
"@types/node": "6.0.40",
...
在typings.json我有如下配置
{ "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" ] }
我必须将类型添加为空数组
- 检查重复项,如果 moduleId: module.id 仍然突出显示
p.s。对我个人来说这是一个奇怪的问题,因为一旦你排除了 typings.json 中的输入,你就立即突出显示了 'module',但是如果你让它进入,你就会有很多重复。不知道该怪谁,我,打字稿或 visual studio :)
这就是我在 Eclipse(Webclipse)/Windows.
上为我所做的工作第 1 步:
航站楼
$ npm install @types/node --global --save
第 2 步:
tsconfig.json
{
"compilerOptions": {
...,
"types": ["node"]
}
}
此外,我的 package.json 中有以下依赖项,所以我使用的是 typescript 2。
"devDependencies": {
...
"typescript": "~2.0.10",
"@types/node": "^6.0.46",
...
},
我在项目中安装,运行良好
npm install @types/node --save-dev
我在将我的@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!';
}
删除所有事件解决了我的错误。
module.id
找不到名称模块。
按照以下步骤解决此问题,
第 1 步:使用以下命令安装节点模块
npm i @types/node --save
第二步:修改src/app
tsconfig.app.json
"types": [
"node"
]
对我来说,我有一个 tsconfig.app.json
扩展 tsconfig.json
。所以当我在 tsconfig.json
中添加 "types": ["node"]
时,它被 tsconfig.app.json
中的 "types" 属性 覆盖了。将 "node" 添加到 tsconfig.app.config
中现有的 "types" 属性 修复了它。
直到我将其粘贴到组件顶部 module.id 的位置之前,它仍然无法正常工作。像这样
declare var module: NodeModule;
interface NodeModule
{
id: string;
}@Component({module.id})