использование процесса.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
.