我定义了以下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错误?
答案 0 :(得分:92)
更新
如果您使用 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"
}
答案 1 :(得分:44)
对于那些希望使用Typescript 2.x和@types执行此操作的人,您需要执行以下操作:
npm install -D @types/node
types: ["node"]
文件的compilerOptions
下添加tsconfig.json
。我很难找到第2步的说明。
修改强>
你也可以这样做:
"typeRoots": [ "node_modules/@types" ]
文件的compilerOptions
下添加tsconfig.json
。这不是types
属性,而是自动包含您使用npm安装的任何@types
的好处。例如:
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
[第二次修改]
Apparently,使用最新的打字稿,如果typeRoots
不在项目的根目录中,或者您的类型未存储在{{1}中,则只需要types
或tsconfig.json
}。
答案 2 :(得分:11)
而不是“环境”尝试通过Typings 1.0
的“全局”typings install dt~node --global --save
答案 3 :(得分:9)
将@ angular / angular2 Quickstart项目移植到新的角度cli自动生成项目时,我遇到了这个错误。
似乎不再需要<?php foreach ($servers as $server): ?>
<?php if($server['type']=="good"){?>
<tr>
<td style="width:340px;"> <?php echo $server['name']; ?></td>
<td style="width:240px;"><?php echo $server['ip']; ?></td>
</tr>
<?php } ?>
<?php endforeach; ?>
。
这是最新的自动生成组件:
moduleId: module.id
删除所有出现都解决了我的错误。
答案 4 :(得分:3)
两个关键点:
运行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" />
在typings/index.d.ts
files
部分添加tsconfig.json
{
"files": [
"typings/index.d.ts"
]
}
查看更多here。
答案 5 :(得分:1)
我使用VS 2015,并遇到同样的问题,但我已经解决了使用:
从angular.io网站(目前2.0.0决赛)和运行中添加typings.json文件:
typings install // don't forget to install typings globally
然后
npm install -D @types/node --save
在package.json中的我有
"devDependencies": {
"@types/node": "6.0.40",
...
我有以下配置
{
"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"
]
}
我必须将类型添加为空数组
P.S。对我个人来说这是一个奇怪的问题,因为只要你在typings.json中排除了打字,就会立即突出显示&#39; module&#39;,但是如果你让它进入,你就会有很多重复。不知道应该责怪谁,我,打字稿或视觉工作室:)
答案 6 :(得分:0)
这就是我在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",
...
},
答案 7 :(得分:0)
我安装在项目中,运作良好
npm install @types/node --save
答案 8 :(得分:0)
module.id
找不到名称模块。
请按照以下步骤解决此问题,
第1步:使用以下命令安装节点模块
npm i @types/node --save
步骤2:修改tsconfig.app.json
下的文件src/app
"types": [
"node"
]
答案 9 :(得分:0)
对我来说,我有一个N4*BALE*WHITE~DMG*D8*19630625~N4*PITT*PINKMAN*15108~
扩展了tsconfig.app.json
。因此,当我在tsconfig.json
中添加"types": ["node"]
时,它被tsconfig.json
中的“ types”属性覆盖。在tsconfig.app.json
中将“节点”添加到现有的“类型”属性中即可解决该问题。
答案 10 :(得分:0)
直到将其粘贴到组件顶部的module.id之前,它仍然无法正常工作。像这样
声明var模块:NodeModule;
Interface NodeModule接口
{
id:字符串;
}@Component({module.id})