[英]Read arguments from command line - error TS2304: Cannot find name 'process'
使用 TypeScript 1.7.5 版。
我正在编写一个 nodeJS 程序,我想在其中读取用户传递的命令行参数(2 个整数)。 在原始 JavaScript 中一切正常,但 TypeScript 出现问题。
什么时候
process.argv用于 TypeScript 文件,当它被编译为 JavaScript 时,编译器会出错,因为它无法识别“进程”变量。
错误 TS2304:找不到名称“进程”
我曾尝试在文件顶部声明一个新的 var“process”,但它覆盖了本机变量,它不再包含参数......
我想将所有代码都保留在 TypeScript 中,仅在构建时编译为 JavaScript。 此问题的最佳解决方法是什么?
您需要确保 Node 的类型定义可用。 执行此操作的方法取决于您使用的 TypeScript 版本。
使用Typings安装定义。
typings install --save --global env~node
确保在tsconfig.json
文件中包含typings/index.d.ts
。 要么将其包含在"files"
数组中:
"files": ["typings/index.d.ts"]
或者确保从"exclude"
数组中省略它。
在 TypeScript 2 中,定义可以通过@types
范围下的npm 安装。
npm install --save-dev @types/node
您必须确保适当的类型定义可用。 为此使用打字包管理器。 安装节点的定义如下:
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" />
在寻找“找不到名称‘进程’”时,这个问题位于谷歌搜索结果的顶部,所以我将在这里添加我的 2 美分到一个不太不相关的问题。
如果你在使用if(process.env.NODE_ENV === "production")
使用 webpack 剥离生产中的一些代码时需要摆脱错误,只需在该行之前添加以下声明:
declare var process: {
env: {
NODE_ENV: string
}
};
TypeScript 2 - Windows 用户
由于这个问题在 Google 的顶部是“ts2304 找不到名称‘进程’”,因此我想为 Windows 用户添加一些帮助。 我试图使用配置文件中的环境变量,但遇到了这个错误。
TSError: 无法编译 TypeScript。
找不到名称“进程”- (2304)
我终于将它添加到我的 tsconfig.json 中:
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types"
]
}
}
这是与 tsconfig.json 和 node_modules 位于同一目录级别,但由于某种原因编译器没有看到它。 奇怪的是这个错误只发生在 process.env 变量上,因为我的其余代码编译没有问题。
我在 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 个步骤
我遇到了这个问题,不得不将以下内容添加到包含进程调用的文件中:
import { } from 'node';
此时它识别过程
在花了太长时间谷歌搜索这个错误之后......
如果使用 VS Code,请检查它是否在正确的目录中打开。 如果没有, cd
到正确的目录, code .
打开一个新窗口,然后npm i
。 这对我来说修复了 - 有时最简单的解决方案需要最长时间才能找到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.