【问题标题】:Test ENV variable during development in node在节点开发期间测试 ENV 变量
【发布时间】:2015-07-01 07:11:30
【问题描述】:

我已经为 ENV 变量创建了以下配置文件,我想在开发中对其进行测试(在开发周期中我想测试 prod 和 dev 变量并获得不同的配置值),我该怎么做?

module.exports = function () {

    switch (process.env.NODE_ENV) {
        case 'development':
            return
        {
            PORT : 3010
            UUID : '13bfbcf4-1f2f-11e5-b5f7-727283247c7f'
        };

        case 'production':
            return
        {
            PORT : 4000
            UUID : '3e30020a-1f2f-11e5-b5f7-727283247c7f'
        };

        default:
    }
};  

在我使用的 server.js 文件中

config = require('./config');
...
 configs = new config();

但不知道如何测试它并传递值,因为当我在上面的行 process.env.NODE_ENV = 'development' 之后出现错误,知道如何在本地测试 prod 和 dev 的配置吗?

此外,这是推荐使用 dev/prod 进行此操作的方法吗?

【问题讨论】:

  • 查找如何在 linux(或其他)中设置环境变量,它不是节点的一部分
  • @dandavis 那么您建议如何测试配置文件?我希望例如当您处于“生产”状态时获得端口 4000,提前致谢!
  • 您似乎正在尝试重新实现config。无论如何,您的配置文件包含无效的 Javascript(对象属性后缺少逗号)。
  • config = require('./config')(); console.log("using port: ", config.port)
  • @dandavis-谢谢,但在这种情况下我得到了哪个端口,开发人员?所以只是为了验证我不能以某种方式将环境修改为仅用于测试的生产环境?..

标签: javascript node.js environment-variables


【解决方案1】:

你做事的顺序很重要:你需要在运行你的配置函数之前设置环境变量:

var config = require('./config');

process.env.NODE_ENV = 'production';

var configs = config();

如果您想在外部设置它,并且假设您正在运行某种 Unix(类)操作系统,请像这样启动您的应用程序:

$ env NODE_ENV=production node server

我更喜欢自己使用config 模块,它负责加载正确的配置文件等。

【讨论】:

  • 谢谢,我尝试按照您的建议进行操作,但未定义错误配置,您知道这是什么原因吗?
  • @Mark 听起来您的默认情况已被选中。
  • 这是什么意思,我得到了未定义的配置,它可以是什么?
  • @Mark the default case in config.js 不返回任何内容,因此当它被选中时(因为其他情况不匹配),它将导致 configs 未定义。
  • 谢谢,但我怎样才能克服它并获得开发或生产?有什么想法吗?
猜你喜欢
  • 2022-09-07
  • 2019-09-28
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 2017-06-13
  • 1970-01-01
相关资源
最近更新 更多