Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以根据域在node.js中设置环境变量吗?_Node.js_Heroku - Fatal编程技术网

我可以根据域在node.js中设置环境变量吗?

我可以根据域在node.js中设置环境变量吗?,node.js,heroku,Node.js,Heroku,我可以根据请求所经过的域设置环境变量吗 我想的是,我已经启动并运行了node.js应用程序,我分配了两个域,同一个域,具有不同的TLD:s,如下所示 mydomain.fr mydomain.de 做一些类似于伪代码的事情 switch(app.host) { case 'mydomain.fr': process.env.LANGUAGE = 'fr'; break; case 'mydomain.de': process.env.LANGUAGE = 'de'

我可以根据请求所经过的域设置环境变量吗

我想的是,我已经启动并运行了node.js应用程序,我分配了两个域,同一个域,具有不同的TLD:s,如下所示

mydomain.fr
mydomain.de
做一些类似于伪代码的事情

switch(app.host) {
  case 'mydomain.fr':
    process.env.LANGUAGE = 'fr';
  break;

  case 'mydomain.de':
    process.env.LANGUAGE = 'de';
  break;

  default:
    process.env.LANGUAGE = 'en';
  break;
}
我之所以考虑这样做,是因为我真的希望使用节点模块,如
i18n
或类似的模块,但使用相同的代码库,然后在特定的json文件中添加不同的语言变量

如果我想在一个新的国家,比如意大利(.it)或其他任何地方,这将使我的网站更容易发布。如果我将更新推送到网站,它会自动推送到所有语言

现在我的主要问题是:这可能吗 第二,这种方法的优点和缺点是什么?我已经列出了一些优点,现在我能想到的唯一缺点是,一台web服务器需要比我在不同服务器上设置页面所需的更大/更强

值得一提的是,每个语言网站的流量都很低(两种语言每月都低于10公里)


另一个值得一提的是,如果有必要的话,我计划将这些网站部署到Heroku。

如果两个域同时运行,它将不起作用

node.js中的
process
等全局变量就是:全局变量。如果运行两个服务(应用程序),第一个将把变量
process.env.LANGUAGE
设置为某物,第二个将覆盖它

如果你在每个连接上都这样做,它甚至都不会工作。来自法国的第一位客户将
process.env.LANGUAGE
设置为
fr
,然后来自德国的第二位客户将其设置为
de
,然后在您回复第一位客户(法国人)时,您将以德语向他提供页面

记住,虽然node.js只是单线程的,但我们仍然需要担心多个连接,因为它们可能是并发的



正确的附加位置是为每个连接唯一获得的变量:请求对象和响应对象(通常缩写为
req
res
)。如果您想要一些标准的东西,请使用中间件向请求对象添加一个伪头。我个人只会做
req.lang='de'

如果两个域同时运行,它将不起作用

node.js中的
process
等全局变量就是:全局变量。如果运行两个服务(应用程序),第一个将把变量
process.env.LANGUAGE
设置为某物,第二个将覆盖它

如果你在每个连接上都这样做,它甚至都不会工作。来自法国的第一位客户将
process.env.LANGUAGE
设置为
fr
,然后来自德国的第二位客户将其设置为
de
,然后在您回复第一位客户(法国人)时,您将以德语向他提供页面

记住,虽然node.js只是单线程的,但我们仍然需要担心多个连接,因为它们可能是并发的


正确的附加位置是为每个连接唯一获得的变量:请求对象和响应对象(通常缩写为
req
res
)。如果您想要一些标准的东西,请使用中间件向请求对象添加一个伪头。我个人只会做
req.lang='de'