根据URL更改Express常量(即localhost与生产)

时间:2017-08-19 16:30:29

标签: node.js express

我对节点和表达相当新...

我在Node / Express应用程序中为“域”设置了一个常量。当我在开发和生产之间切换时,我经常在localhost和实际url之间切换。

我正在试图弄清楚如何自动测试URL,以便在服务器上读取代码(即实际域url vs localhost)时,它会设置正确的域URL。

这是我的代码:

function define(name, value) {
    Object.defineProperty(exports, name, {
        value:      value,
        enumerable: true
    });
}


define("DOMAIN", "http://www.actual_domain.com");
// define("DOMAIN", "http://localhost:3000");

任何人都有一个简单的解决方案吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

有很多解决方案,但通常这是由环境变量完成的,取决于您的平台,但是,在Linux系统中,您在shell中执行以下操作

export ENV_URL="http://www.example.com"

并确保其成功导出

echo $ENV_URL

并在您的代码中执行

const base_url = process.env.ENV_URL || "http://www.default.com";

在本地计算机中将ENV_URL设置为localhost或您喜欢的任何内容,并在服务器中将其设置为实际的URL。

或者您可以只拥有许多配置文件,您可以通过environemnt变量确定适当的配置文件,如

export ENV=PROD

在您的代码中,您可以加载包含环境配置的prod配置文件。

答案 1 :(得分:0)

实现此类事情的事实上的方法是通过环境变量。查看12factor.net以获取最佳实践,但通常您希望将环境中的差异放入环境变量中,然后在运行时读取这些变量。