节点dotenv文件未加载测试环境

时间:2017-11-27 22:24:27

标签: node.js express environment-variables

我有两个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时遇到问题

2 个答案:

答案 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');

此处提供完整文档:https://www.npmjs.com/package/custom-env