如何在TypeScript中读取节点环境变量?
如果我使用process.env。NODE_ENV我有这个错误:
Property 'NODE_ENV' does not exist on type 'ProcessEnv'
我已经安装了@types/node,但它没有帮助。
如何在TypeScript中读取节点环境变量?
如果我使用process.env。NODE_ENV我有这个错误:
Property 'NODE_ENV' does not exist on type 'ProcessEnv'
我已经安装了@types/node,但它没有帮助。
当前回答
以下是我的envalid解决方案(在Node.js中验证和访问环境变量)
import { str, cleanEnv } from 'envalid'
const env = cleanEnv(process.env, {
clientId: str(),
clientSecret: str(),
})
// and now the env is validated and no longer undefined
const clientId = env.clientId
其他回答
创建一个类似global.d.ts的文件
declare global {
namespace NodeJS {
interface ProcessEnv {
SECRET: string;
}
}
}
export {};
教程由克里斯蒂安Höller
执行typescript最新版本后:
NPM install——save @types/node
你可以使用过程。env直接。
console.log(process.env[“NODE_ENV”])
如果您设置了NODE_ENV,您将看到预期的结果。
使用节点进程的最佳和最简单的方法。你的typescript项目中的env是首先用tsc编译,然后用node提供你的env var运行编译后的javascript文件。ts是你想要的输出目录也是编译文件的名称,我使用dist作为输出目录和index.js为例):
cd my-typescriptproject
tsc
NODE_ENV=test node ./dist/index.js
对于任何来这里寻找Create React App项目答案的人,你的变量名应该以REACT_APP_开头
更多信息请点击:https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables
补充了之前的回答,并在一段时间后解决了这个问题,甚至安装了@types/node,我找到了这个答案。简而言之,只需要运行一个重载窗口:
"...不过,如果typescript语言服务器仍然使用以前版本的tsconfig,则可能需要重新启动它。为了在VS Code中做到这一点,你可以按Ctrl+Shift+P并重新加载窗口或TypeScript:如果可用,重新启动TS服务器……”