TypeScript definitions for process.env.NODE_ENV?



是否有一个项目为"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 中收到此错误,也许您只需要重新启动它。

最新更新