从命令行读取参数 - 错误TS2304:找不到名称'process'

Roh*_*lor 39 javascript command-line-arguments node.js typescript

使用TypeScript版本1.7.5.

我正在编写一个nodeJS程序,我想在其中读取用户传递的命令行参数(2个整数).在原始JavaScript中一切正常,但TypeScript会出现问题.

什么时候

process.argv
用于TypeScript文件,当它编译成JavaScript时编译器错误,因为它不识别"进程"变量.

error TS2304: Cannot find name 'process'

我已经尝试在文件顶部声明一个新的var"process",但是它会覆盖原生变量并且它不再包含参数......

我想将所有代码保存在TypeScript中,只在构建时编译为JavaScript.这个问题的最佳解决方法是什么?

McM*_*ath 49

更新:2016年9月

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

TypeScript 1

使用" 类型"安装定义.

typings install --save --global env~node
Run Code Online (Sandbox Code Playgroud)

请务必包含typings/index.d.ts在您的tsconfig.json文件中.将它包含在"files"数组中:

"files": ["typings/index.d.ts"]
Run Code Online (Sandbox Code Playgroud)

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

TypeScript 2

在打字稿2,定义可以通过NPM安装的下@types范围.

npm install --save-dev @types/node
Run Code Online (Sandbox Code Playgroud)

原答案:2016年2月

您必须确保可以使用适当的类型定义.使用打字包管理器.按如下方式安装节点的定义:

typings install --save --ambient node
Run Code Online (Sandbox Code Playgroud)

现在,有几种方法可以确保编译器可以使用这些定义.首选方法是设置tsconfig文件,如下所示:

{
  "exclude": [
    "typings/browser.d.ts",
    "typings/browser",
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

或者,或者:

{
  "files": [
    "typings/main.d.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果您没有使用tsconfig文件,则可以使用主条目文件顶部的引用,如下所示:

/// <reference path="path/to/typings/main.d.ts" />
Run Code Online (Sandbox Code Playgroud)

  • 使用typescript 2,它现在是`npm i -D @ types/node` (3认同)

Hon*_*fus 10

在查找"无法找到名称'流程'时,此问题位于Google搜索结果的首位,因此我将在此处添加2美分给一个不太相关的问题.

如果你需要在使用if(process.env.NODE_ENV === "production")webpack去除生产中的某些代码时摆脱错误,只需在行之前添加以下声明:

declare var process: {
   env: {
       NODE_ENV: string
   }
};
Run Code Online (Sandbox Code Playgroud)


小智 9

TypeScript 2 - Windows用户

由于这个问题在谷歌的顶部是"ts2304无法找到名称'过程'"我想为Windows用户添加一些帮助.我试图从配置文件中使用环境变量,并且遇到了这个错误.

TSError:无法编译TypeScript.

找不到名称'process'-(2304)

我终于将它添加到我的tsconfig.json:

{
  "compilerOptions": {
    "typeRoots": [
      "./node_modules/@types"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

这与tsconfig.json和node_modules在同一目录级别,但由于某种原因,编译器只是没有看到它.奇怪的是这个错误只发生在process.env变量上,因为我的其余代码编译没有问题.

  • 非常感谢,通过`npm install --save-dev @ types/node'添加节点类型,这就成功了. (2认同)

小智 5

我在OSX上的完整解决方案将上面的一些内容结合在一起。error TS2304: Cannot find name 'process'.我的用例是将React项目从jsx / js部分迁移到tsx / ts。

  1. yarn add -D @types/node
  2. 更新tsconfig.json为包括"typeRoots": ["./node_modules/@types"]
  3. 包括import { } from 'node';在文件的顶部有错误

使用Typescript v2.7.1时,我需要全部3个步骤