我的第一台NodeJS服务器与应用程序的其余部分一起部署到客户端服务器。我有一些项目需要在特定于服务器的基础上进行配置,但我找不到任何简单的方法来处理这个问题。
在谷歌上搜索我发现了一些选择 - 使用内置支持的框架(太晚了),设置一个可以加载的配置文件(可以工作,但我不想担心为我们拥有的每个服务器保留一个配置文件,并将它们保留在git之外。
我很想让节点确定请求域是什么(dev.ourdomain vs www.ourdomain)并且只是做一个条件。听起来很简单,很容易,但我找不到任何方法来确定域数据。
答案 0 :(得分:1)
正如@drachenstern所提到的,你可以使用request.headers.host,如:
# get the path portion of the URI without optional port
var domain=request.headers.host.replace(/\:\d+$/,'');
但如果请求是使用IP地址而不是服务器名称进行的,则不会提供规范域。
更好的选择可能是使用服务器的主机名,如:
var domain=process.env[
process.env['OS'] && process.env['OS'].match(/^Win/) ? 'HOSTNAME' : 'HOST'
];
答案 1 :(得分:0)
您可以考虑request.host是否包含您需要的数据。它很可能会。
答案 2 :(得分:0)
为什么不在init.js中对该信息进行硬编码并为每个服务器更改?您多久需要移动服务器才能执行此操作?就这样做
init.js
module.exports = { domain: "dev.ourdomain"};
main.js
var domain = require( "init.js" ).domain;
我假设您正在开发dev.ourdomain并将其转储到www.ourdomain上。只是忽略转储init.js,以便服务器的init版本仍然是^ _ ^这就是我所做的,它省去了用另一个模块为一个命令膨胀项目的需要。
希望这有助于遇到这种情况的其他人。