Jon*_*nas 40 environment-variables node.js express dotenv
我想为每种模式(开发、生产等)使用单独的 .env 文件。在处理我的 vue.js 项目时,我可以使用类似.env.development或 的文件.env.production来获取相同 env 键的不同值。(例如:在 .env.development 中:FOO=BAR 和在 .env.production 中:FOO=BAZ,在开发模式中 process.env.FOO 将是 BAR,在生产中我将是 BAZ)。
我正在 Express 服务器上工作,并希望使用这些相同类型的 .env 文件来存储端口、db uri、用户、密码...
我知道我可以像这样编辑 package.json 中的脚本:
"scripts": {
"start": "NODE_ENV=development PORT=80 node ./bin/www",
"start-prod": "NODE_ENV=production PORT=81 node ./bin/www"
}
Run Code Online (Sandbox Code Playgroud)
但这在使用多个变量时会变得混乱。
我试过使用dotenv但似乎您只能使用 .env 文件。不是 .env.development 和 .env.production。
我可以使用 dotenv 包还是需要另一个包?或者我可以在没有任何包装的情况下做到这一点吗?
Mar*_*orn 70
您可以通过以下path选项指定要使用的 .env 文件路径:
require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` })
Run Code Online (Sandbox Code Playgroud)
Jos*_*osh 14
上面两个答案都有点偏差。让我解释。下面来自 KyleMit 的答案缺少 ./ 来指示当前目录。
"hey computer look in my current directory for this file".//look in my current directory for this hidden file.
// List hidden files in dir: ls -a
require('dotenv').config({ path: `./.env.${process.env.NODE_ENV}` })
//I reccomend doing a console.log as well to make sure the names match*
console.log(`./.env.${process.env.NODE_ENV}`)
Run Code Online (Sandbox Code Playgroud)
Rom*_*her 11
对于打字稿:
import dotenv from 'dotenv'
dotenv.config({ path: `.env.${process.env.NODE_ENV}` })
Run Code Online (Sandbox Code Playgroud)
我使用custom-env npm 包来处理多个 .env 文件。只需将其放在代码的顶部即可:
require('custom-env').env();
Run Code Online (Sandbox Code Playgroud)
它将从文件加载环境变量.env.X,其中 X 是环境变量的值NODE_ENV。例如:.env.test或.env.production。
这是关于如何使用该包的很好的教程。
从上面的答案来看:这是对我有用的最终结果。
src 目录中的 .env.dev 文件。
import path from 'path';
dotenv.config({ path: path.join(__dirname, `./.env.${process.env.NODE_ENV}`)});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35468 次 |
| 最近记录: |