TypeScript:从命令行读取参数 – 错误TS2304:找不到名称'process'
使用TypeScript 1.7.5版。
我正在写一个nodeJS程序,我想读取用户传递的命令行参数(2个整数)。 在原始JavaScript中一切正常,但TypeScript出现问题。
什么时候
process.argv
在TypeScript文件中使用,因为它不能识别“process”variables,所以编译为JavaScript时会出现编译器错误。
错误TS2304:找不到名称“进程”
我已经尝试在文件的顶部声明一个新的variables“进程”,但是覆盖了本地variables,它不再包含参数…
我想保留所有的代码在TypeScript中,只在编译时编译为JavaScript。 什么是这个问题最好的解决方法?
更新:2016年9月
您需要确保Node的types定义可用。 要做到这一点的方式取决于你正在使用哪个版本的TypeScript。
TypeScript 1
使用types来安装定义。
typings install --save --global env~node
确保在你的tsconfig.json
文件中包含typings/index.d.ts
。 将其包含在"files"
数组中:
"files": ["typings/index.d.ts"]
或者确保从"exclude"
数组中省略它。
TypeScript 2
在TypeScript 2中,可以通过 @types
范围内的npm来安装定义。
npm install --save-dev @types/node
原答复:2016年2月
您必须确保适当的types定义可用。 使用打字包pipe理器。 安装节点的定义如下:
typings install --save --ambient node
现在,有几种方法可以确保编译器可以使用这些定义。 首选的方法是像这样设置你的tsconfig文件 :
{ "exclude": [ "typings/browser.d.ts", "typings/browser", "node_modules" ] }
或者,或者:
{ "files": [ "typings/main.d.ts" ] }
如果您没有使用tsconfig文件,则可以在主条目文件的顶部使用引用,如下所示:
/// <reference path="path/to/typings/main.d.ts" />
这个问题是在search“无法find名字的过程”时在Googlesearch结果的顶部,所以我会在这里添加我的2分钱到一个不太不相关的问题。
如果在使用if(process.env.NODE_ENV === "production")
时候需要去掉这个错误,用webpack去掉生产中的一些代码,只需要在这行之前添加下面的声明:
declare var process: { env: { NODE_ENV: string } };
TypeScript 2 – Windows用户
由于这个问题是在谷歌的顶部“ts2304无法find名称”过程“”我想为Windows用户添加一些帮助。 我试图从一个configuration文件使用环境variables,并坚持这个错误。
TSError:无法编译TypeScript。
找不到名称'process'(2304)
我终于把这个添加到我的tsconfig.json中:
{ "compilerOptions": { "typeRoots": [ "./node_modules/@types" ] } }
这与tsconfig.json和node_modules在相同的目录级别,但由于某种原因,编译器只是没有看到它。 奇怪的是,这个错误只发生在process.envvariables,因为我的代码的其余部分没有编译麻烦。