是否有一个项目使用TypeScript定义“process”变量来使用process.env.NODE_ENV?找不到任何地方。
答案 0 :(得分:38)
节点8的更新:
现在env
在DefinitelyTyped中声明为ProcessEnv
。
env: ProcessEnv;
export interface ProcessEnv {
[key: string]: string | undefined;
}
TypeScript 2支持节点的npm包类型定义。它目前使用DefinitivelyTyped node.d.ts。
npm install --save-dev @types/node
Pre Node 8版本:
处理env
is declared as any
in DefinitelyTyped node.d.ts。
env: any;
答案 1 :(得分:13)
'流程的定义'变量可以在默认的node.js d.ts中找到,来自明确的类型,并在你的typings.json中添加如下:
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
我认为特定的NODE_ENV变量没有任何定义。因为它只是一个约定(由express link广泛使用)而node.js本身并不关心那个特定的环境变量。
答案 2 :(得分:4)
在使用process.env.NODE_ENV
之前添加declare var process : {
env: {
NODE_ENV: string
}
}
答案 3 :(得分:3)
使用通过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
您可以使用declaration merging向process.env
添加新值。在您的项目中创建一个新的d.ts
文件,然后添加:
declare global {
namespace NodeJS {
interface ProcessEnv {
NODE_ENV?: string
}
}
}
这将使您编写process.env.NODE_ENV
。我建议保留?除非您已验证它是否已设置在库中的某个位置。
答案 4 :(得分:0)
如果您在VSCode中遇到此错误,也许您只需要重新启动它即可。
答案 5 :(得分:0)
declare namespace NodeJS {
interface ProcessEnv {
[key: string]: string | undefined
NODE_ENV?: 'development' | 'production' | 'test'
}
}
将上面的代码放入文件global.d.ts
答案 6 :(得分:0)
如果您使用的是 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 {}