Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript process.env.NODE\u env的类型脚本定义?_Typescript - Fatal编程技术网

Typescript process.env.NODE\u env的类型脚本定义?

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广

是否有一个项目使用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.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 {}