использование процесса.env в TypeScript

как читать переменные среды узла в TypeScript?

Если я использую process.env.NODE_ENV У меня есть эта ошибка :

Property 'NODE_ENV' does not exist on type 'ProcessEnv'

Я установил

3 ответов


нет никакой гарантии того, что (если есть) переменные среды будут доступны в процессе узла -NODE_ENV переменная-это просто соглашение, которое было популяризировано Express, а не что-то встроенное в сам узел. Таким образом, на самом деле не имеет смысла включать его в определения типов. Вместо они определяют process.env такой:

export interface ProcessEnv {
    [key: string]: string | undefined
}

что означает process.env можно индексировать строкой, чтобы получить строку обратно (или undefined, если переменная не задана). Чтобы исправить ошибку, вам придется использовать синтаксис индекса:

let env = process.env["NODE_ENV"];

кроме того, как указал jcalz в комментариях, если вы используете TypeScript 2.2 или новее, вы можете получить доступ к индексируемым типам, таким как тот, который определен выше, используя синтаксис точки - в этом случае ваш код должен работать как есть.


просто добавьте перед использованием process.env.NODE_ENV последующие строки:

declare var process : {
  env: {
    NODE_ENV: string
  }
}

после выполнения с typescript последней версии:

npm install --save @types/node

можно использовать process.env напрямую.

console.log(process.env["NODE_ENV"])

вы увидите ожидаемый результат, если вы установили NODE_ENV.