如何在 NodeJs 中通过“.env”文件使用不同的环境

Mas*_*dot 9 node.js typescript ecmascript-6 dotenv

我目前正在用nodejs构建一个后端。我正在考虑如何为项目添加环境配置。我的想法是,我有一个/config文件夹,其中有我的envparser.ts(必须为此考虑一个更好的名称^^),它将我的.env文件解释为将它们用作常规的 javascript const。通过在我的脚本中使用脚本,package.json我希望能够切换环境。但我不\xc2\xb4t知道如何.env使用dotenv在多个​​文件之间切换。

\n

文件结构:

\n
config/\n   .env.development\n   .env.production\n   envparser.ts\n
Run Code Online (Sandbox Code Playgroud)\n

脚本:

\n
\n
yarn start\nyarn start -p/-production //Or a different Syntax to change envs\n
Run Code Online (Sandbox Code Playgroud)\n
\n

Him*_*ngh 16

您可以使用dotenv包来访问您的.env.*文件。


NODE_ENV您可以通过使用不同的启动命令更改变量来在不同的环境之间切换package.json

例如:

"scripts": {
    "start": "NODE_ENV=development nodemon index.js",
    "deploy": "NODE_ENV=production node index.js"
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以在 index.js 文件中访问它们,如下所示:

require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` })
Run Code Online (Sandbox Code Playgroud)


Aka*_*han 8

您可以在脚本部分中添加类似的内容package.json

"start:dev": "node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env.development", 
"start:prod": "node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/.env.production"
Run Code Online (Sandbox Code Playgroud)

DEV通过运行以模式启动服务器npm run start:dev

PROD通过运行以模式启动服务器npm run start:prod