是否有一个项目为"process"变量使用 TypeScript 定义以供process.env.NODE_ENV使用?找不到任何地方。
节点 8 的更新:
现在env
在 DefinitelyType 中声明为 ProcessEnv
。
env: ProcessEnv;
export interface ProcessEnv {
[key: string]: string | undefined;
}
TypeScript 2 支持 node 的 npm 包类型定义。它目前使用 DefinitivelyTyped node.d.ts。
npm install --save-dev @types/node
节点 8 之前的版本:
进程env
在 DefinitelyTyped node.d.ts 中声明为 any
。
env: any;
'process' 变量的定义可以在默认节点中找到.js d.ts 来自 绝对键入并添加到您的 typings.json 中,如下所示:
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
我认为特定NODE_ENV变量没有任何定义。由于它只是一个约定(被快速链接广泛使用)和节点.js因此本身并不关心该特定的环境变量。
只需在使用前添加process.env.NODE_ENV
declare var process : {
env: {
NODE_ENV: string
}
}
在 TypeScript 3+ 中添加节点定义
使用 Absolute Typed 中的类型 通过 npm/yarn:
# Install the latest
npm install --save-dev @types/node
# or
yarn add @types/node --dev
# To install the right types for your version of node (e.g. 12 here)
npm install --save-dev @types/node@^12
yarn add @types/node@^12 --dev
在类型可用的情况下,对象process.env
应该在代码中可用。
扩展process.env
可以使用声明合并向 process.env
添加新值。在项目中创建新的d.ts
文件,然后添加:
declare global {
namespace NodeJS {
interface ProcessEnv {
NODE_ENV?: string
}
}
}
这将允许您编写process.env.NODE_ENV
.我建议保留 ?除非验证了它在库中的某个位置设置。
declare namespace NodeJS {
interface ProcessEnv {
[key: string]: string | undefined
NODE_ENV?: 'development' | 'production' | 'test'
}
}
将上面的代码放在您的文件中global.d.ts
如果您使用的是create-react-app your-app-test --template typescript
然后已经存在一个文件来设置您的环境变量。
文件名:react-app-env.d.ts
位于src
文件夹中。
然后,您可以使用此模板在该文件中设置自定义env
变量:
/// <reference types="react-scripts" />
declare global {
namespace NodeJS {
interface ProcessEnv {
GITHUB_AUTH_TOKEN: string;
NODE_ENV: 'development' | 'production';
PORT?: string;
PWD: string;
}
}
}
// If this file has no import/export statements (i.e. is a script)
// convert it into a module by adding an empty export statement.
export {}
如果您在 VSCode 中收到此错误,也许您只需要重新启动它。