从命令行读取参数 - 错误 TS2304:找不到名称“进程”
Posted
技术标签:
【中文标题】从命令行读取参数 - 错误 TS2304:找不到名称“进程”【英文标题】:Read arguments from command line - error TS2304: Cannot find name 'process' 【发布时间】:2016-06-03 17:37:31 【问题描述】:使用 TypeScript 1.7.5 版。
我正在编写一个 nodeJS 程序,我想在其中读取用户传递的命令行参数(2 个整数)。在原始 javascript 中一切正常,但 TypeScript 出现问题。
当
process.argv在 TypeScript 文件中使用,当它被编译为 JavaScript 时,编译器会出错,因为它无法识别“进程”变量。
错误 TS2304:找不到名称“进程”
我尝试在文件顶部声明一个新的 var“进程”,但这会覆盖本机变量并且它不再包含参数...
我想将所有代码都保留在 TypeScript 中,只在构建时编译为 JavaScript。解决此问题的最佳方法是什么?
【问题讨论】:
您是否为节点安装了typings?即typings install --save --ambient node
@McMath 我刚刚安装了这些类型,但它们对错误没有任何影响。请注意 - 除了这个问题,我的 TypeScript 程序可以完美编译和运行。
我认为您必须在脚本顶部手动包含它们/// <reference path="../typings/main.d.ts" />
好的,您还需要执行一些步骤。我将在答案中展开。给我几分钟。
【参考方案1】:
在谷歌上搜索这个错误太久之后......
如果使用 VS Code,请检查它是否在正确的目录中打开。如果没有,cd
进入正确的目录,code .
打开一个新窗口,然后npm i
。这为我解决了问题 - 有时最简单的解决方案需要最长时间才能找到。
【讨论】:
【参考方案2】:我在 OSX 上的完整解决方案结合了上述一些 error TS2304: Cannot find name 'process'.
我的用例是从 jsx/js 部分迁移到 tsx/ts 的 React 项目。
yarn add -D @types/node
更新了tsconfig.json
以包括"typeRoots": ["./node_modules/@types"]
在错误的文件顶部包含import from 'node';
使用 Typescript v2.7.1 时,我需要所有 3 个步骤
【讨论】:
【参考方案3】:我遇到了这个问题,不得不将以下内容添加到包含进程调用的文件中:
import from 'node';
在什么时候识别出进程
【讨论】:
【参考方案4】:TypeScript 2 - Windows 用户
由于“ts2304 找不到名称‘进程’”这个问题在谷歌的顶部,我想为 Windows 用户添加一些帮助。我试图使用配置文件中的环境变量并遇到此错误。
TSError:无法编译 TypeScript。
找不到名称“进程”- (2304)
我终于把它添加到了我的 tsconfig.json 中:
"compilerOptions":
"typeRoots": [
"./node_modules/@types"
]
这是 tsconfig.json 和 node_modules 在同一目录级别,但由于某种原因编译器没有看到它。奇怪的是,这个错误只发生在 process.env 变量上,因为我的其余代码编译没有问题。
【讨论】:
非常感谢,这与通过npm install --save-dev @types/node
添加节点类型一起完成了技巧【参考方案5】:
更新:2016 年 9 月
您需要确保 Node 的类型定义可用。执行此操作的方法取决于您使用的 TypeScript 版本。
TypeScript 1
使用Typings 安装定义。
typings install --save --global env~node
确保在您的tsconfig.json
文件中包含typings/index.d.ts
。将其包含在 "files"
数组中:
"files": ["typings/index.d.ts"]
或者确保从 "exclude"
数组中省略它。
TypeScript 2
在 TypeScript 2 中,定义可以是 installed via npm 在 @types
范围内。
npm install --save-dev @types/node
原答案:2016 年 2 月
您必须确保适当的类型定义可用。为此,请使用 typings 包管理器。安装节点的定义如下:
typings install --save --ambient node
现在,有几种方法可以确保编译器可以使用这些定义。首选方法是set up your tsconfig file,如下所示:
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
或者,或者:
"files": [
"typings/main.d.ts"
]
如果您不使用 tsconfig 文件,则可以在主条目文件的顶部使用引用,如下所示:
/// <reference path="path/to/typings/main.d.ts" />
【讨论】:
谢谢!我所要做的就是在我的程序顶部包含引用 main.d.ts 文件的最后一部分。它现在可以按预期编译和运行。 使用 typescript 2,现在是npm i -D @types/node
@Offirmo 感谢您的意见。我已经相应地更新了答案。【参考方案6】:
在查找“找不到名称‘进程’”时,此问题位于 Google 结果的顶部,因此我将在此处将我的 2 美分添加到不太相关的问题中。
如果您需要在使用if(process.env.NODE_ENV === "production")
来通过 webpack 剥离生产中的一些代码时摆脱错误,只需在该行之前添加以下声明:
declare var process:
env:
NODE_ENV: string
;
【讨论】:
以上是关于从命令行读取参数 - 错误 TS2304:找不到名称“进程”的主要内容,如果未能解决你的问题,请参考以下文章
接收TS2304:找不到名称'文件'| TS2304:运行“npm run tsc”命令时找不到名称“ReadableStream”