我有两个dotenv文件,一个用于开发,另一个用于测试。
const dotenv = require('dotenv');
if (process.env && process.env.NODE_ENV) {
dotenv.config({path: '.env.' + process.env.NODE_ENV});
} else {
dotenv.config({path: '.env.development'});
}
const http = require('http');
const app = require('../src/app');
const port = parseInt(process.env.PORT, 10) || 8000;
app.set('port', port);
const server = http.createServer(app);
server.listen(port);
以下是我的问题:
在我的情况下,服务器何时加载dotenv文件?如果我在test
env中运行,为什么我没有为那些process.env变量定义?
在我看来,这个文件只运行一次,当我更改NODE_ENV时,它不会更改要加载的文件。
简而言之:
我的开发dotenv正在运行,但在将其更改为test
dotenv时遇到问题
答案 0 :(得分:4)
请查看dotenv-flow包。
此模块扩展dotenv,增加了.env*
,.env.development
,.env.test
等多个.env.production
文件的功能,同时允许定义的变量在VCS未跟踪的相应.env*.local
文件中单独覆盖。
关于针对多个env文件的建议, dotenv-flow 在版本控制下管理.env*
文件的方法略有不同。请参阅Files under version control部分以了解此方法的动机。
答案 1 :(得分:0)
custom-env
也解决了这个问题,它允许针对不同环境的多个配置文件。 npm install custom-env
。
您还可以指定在旅途中使用哪个.env
文件。 require('custom-env').env('test');
。