繁体   English   中英

从命令行读取参数 - 错误 TS2304:找不到名称“进程”

[英]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。 此问题的最佳解决方法是什么?

更新:2016 年 9 月

您需要确保 Node 的类型定义可用。 执行此操作的方法取决于您使用的 TypeScript 版本。

打字稿 1

使用Typings安装定义。

typings install --save --global env~node

确保在tsconfig.json文件中包含typings/index.d.ts 要么将其包含在"files"数组中:

"files": ["typings/index.d.ts"]

或者确保从"exclude"数组中省略它。

打字稿 2

在 TypeScript 2 中,定义可以通过@types范围下的npm 安装

npm install --save-dev @types/node

原答案:2016 年 2 月

您必须确保适当的类型定义可用。 为此使用打字包管理器。 安装节点的定义如下:

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 项目。

  1. yarn add -D @types/node
  2. 更新了tsconfig.json以包含"typeRoots": ["./node_modules/@types"]
  3. 包括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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM