Javascript 节点JS返回主机名

Javascript 节点JS返回主机名,javascript,node.js,hostname,Javascript,Node.js,Hostname,我仍然在学习NodeJS和javascript,并且有一个应用程序。我有一个配置文件,需要获取Ubuntu 12.04上服务器的主机名 我试过这样的方法: window.location.hostname 但这并不奏效。示例代码如下: exports.config = { app_name : [ window.location.hostname ] } 如果我使用字符串,它可以正常加载,但这将通过Github进行管理,并且需要在应用加载时加以区分。根据需要加载“os”模块,该模块

我仍然在学习NodeJS和javascript,并且有一个应用程序。我有一个配置文件,需要获取Ubuntu 12.04上服务器的主机名

我试过这样的方法:

 window.location.hostname
但这并不奏效。示例代码如下:

exports.config = {
    app_name : [ window.location.hostname ]
}
如果我使用字符串,它可以正常加载,但这将通过Github进行管理,并且需要在应用加载时加以区分。

根据需要加载“os”模块,该模块具有
主机名()
功能:

var os = require("os");
var hostname = os.hostname();
但是,这只是主机名,没有域名(FQDN)。获取FQDN没有简单的方法。您可以使用尝试将服务器的IP地址(通过
os.networkInterfaces()
,请参阅上面的文档链接)转换为名称。唯一的问题是服务器可能有不同的接口和名称,因此您必须决定要使用哪个接口和名称

您尝试使用
窗口
对象,但该对象仅存在于浏览器的JavaScript运行时环境中。服务器端JavaScript显然没有窗口,因此没有
window
对象

有了这些信息,您的问题就有点奇怪了——在浏览器的
窗口中。location.hostname
是加载当前页面的URL的主机部分。如何将其转换为服务器上下文?根据定义,您在node.js上运行的代码正是来自该服务器,因此您实际上不需要这些信息。您(可能)需要在浏览器中使用它,因为这些信息是可变的,特别是当您运行mashup(来自各种源的JS代码)时,您的代码可能不知道它运行的页面是从哪里加载的。在服务器上,您总是知道它是您的本地文件系统


顺便说一句,您可以始终使用
localhost
作为主机名:)

如果您运行的服务器使用的是
window.location.hostname
,则只能从中获得相同的主机名。在这种情况下,主机名是请求对象的属性之一:

request.headers.host

我很想把这个答案归功于我,但我来这里只是因为我不知道答案。我发现答案贴在网上。

试试我应该澄清的答案的可能副本。我需要这个名称将数据发送到远程源,并需要区分它来自哪个服务器。如果在linux中运行命令“hostname”,它将返回服务器名称。我希望将此名称传递到我的配置中,以便在它发送数据时,我可以按运行它的服务器组进行组织。@nocode您没有澄清任何内容,因为如果您如上所述使用
os.hostname()
,您将获得主机名,与命令行命令
hostname
相同。如果您需要HTTP连接中的远程主机,您的问题已被有效地标记为“重复”,并且您所有的“主机名”内容都是完全错误的!基本上,你在同一句话(!!!)中说的是你需要本地主机名,而不是远程主机名。下定决心:)你不明白。应用程序正在将本地主机名和其他服务器统计数据作为数据发送到远程源。假设我的环境有10台服务器。这10台服务器将向远程源发送数据,我需要一种方法来定义这10台服务器的主机名,以便区分它们。我可以手动写出来,但需要自动。这与从浏览器获取数据无关。非常好-现在继续使用
os.hostname()
查找主机名。如果这不是你想要的,你应该考虑向其他人介绍你的问题,这是有原因的,这是唯一的答案,如果提到“复制品”对你也没有帮助,你应该问自己一个问题:(我把这个问题留着)我自己,我没有其他补充,因此无需响应。
os.hostname()
返回的操作系统主机名与HTTP请求的主机名部分完全无关。