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,因为我的代码的其余部分没有编译麻烦。