Typescript process.env.NODE\u env的类型脚本定义?
是否有一个项目使用process.env.NODE\u env为“process”变量定义了TypeScript?找不到任何地方。可以在default node.js d.ts中找到“process”变量的定义,这些定义来自于明确键入并添加到typings.json中,如下所示:Typescript process.env.NODE\u env的类型脚本定义?,typescript,Typescript,是否有一个项目使用process.env.NODE\u env为“process”变量定义了TypeScript?找不到任何地方。可以在default node.js d.ts中找到“process”变量的定义,这些定义来自于明确键入并添加到typings.json中,如下所示: "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts" 我认为对于特定的NODE_ENV变量没有任何定义。因为它只是一种约定(被express广
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
我认为对于特定的NODE_ENV变量没有任何定义。因为它只是一种约定(被express广泛使用),node.js本身并不关心特定的环境变量。节点8的更新: 现在,
env
在中声明为ProcessEnv
TypeScript 2支持节点的npm包类型定义。它当前使用定义类型的node.d.ts
npm install --save-dev @types/node
节点8之前的版本:
过程
只需在使用process.env.NODE_env之前添加
declare var process : {
env: {
NODE_ENV: string
}
}
在TypeScript 3中添加节点定义的步骤+
使用通过npm/纱线确定类型的类型:
#安装最新版本
npm安装--保存dev@types/node
#或
纱线添加@types/node--dev
#为您的节点版本安装正确的类型(例如,此处为12)
npm安装--保存dev@types/node@^12
纱线添加@类型/节点@^12--开发
如果您的类型可用,那么对象process.env
应该在您的代码中可用
扩展process.env
您可以使用将新值添加到process.env
。在项目中创建一个新的d.ts
文件,然后添加:
declare global {
namespace NodeJS {
interface ProcessEnv {
NODE_ENV?: string
}
}
}
这将允许您编写
process.env.NODE\u env
。我建议你保留这个房间?在中,除非您已经验证它是在库中的某个位置设置的。如果您在VSCode中遇到此错误,可能您只需要重新启动它
declare namespace NodeJS {
interface ProcessEnv {
[key: string]: string | undefined
NODE_ENV?: 'development' | 'production' | 'test'
}
}
如果您使用的是
create react app您的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 {}
//
宣布全球{
名称空间节点{
接口处理环境{
GITHUB_AUTH_令牌:字符串;
节点_ENV:“开发”|“生产”;
端口?:字符串;
PWD:字符串;
}
}
}
//如果此文件没有导入/导出语句(即是脚本)
//通过添加空的export语句将其转换为模块。
导出{}
请注意,这对webpack env
DefinitelyTypedSince node.v8 env在DefinitelyTyped node.d中声明为ProcessEnv不是很好。ts@Sandokan艾尔·科乔:不错。根据你的评论进行更新。对于任何关注的人:你能用这些东西给回购的链接吗?我复制了,但它不起作用,我得到了错误:属性'REDIS\u SESSION\u SECRET'在类型'ProcessEnv'中丢失,但在类型'ProcessEnv'中是必需的。[2741]
我的代码是const-env:ProcessEnv=process.env
谢谢这对我有用:npm安装--save dev@types/node这是过时的方法,请检查其他答案中的新方法(@types/node
)任何东西都不适合我的开发环境,所以我只使用了这个包,现在它可以工作了。这些类型应该作为devDependency安装吗?是的,应该是
declare namespace NodeJS {
interface ProcessEnv {
[key: string]: string | undefined
NODE_ENV?: 'development' | 'production' | 'test'
}
}
/// <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 {}