更改基于URL的Express常量(例如localhost vs production)

我是相当新的节点和expression…

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

我想弄清楚如何自动testing的URL,以便在服务器上读取代码(即实际的域名url vs本地主机),它设置适当的域名的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"); 

任何人都有一个简单的解决scheme呢?

谢谢!!

有很多解决scheme,但通常这是由环境variables完成的,取决于你的平台,但是在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。

或者你可以简单地有许多configuration文件,你可以通过environemntvariables来确定合适的configuration文件

 export ENV=PROD 

并在您的代码中,您可以加载包含您的环境configuration的prodconfiguration文件。

做这种事情的事实上的方式是通过环境variables。 看一看12factor.net是否有一些最佳实践,但是一般来说你想把环境variables放在环境variables中,然后在运行时读取这些variables。