[英]Node JS return hostname
我还在学习Node JS和javascript并有一个应用程序。 我有一个配置文件,我需要在Ubuntu 12.04上获取服务器的主机名
我尝试过类似的东西:
window.location.hostname
但那没用。 示例代码如下:
exports.config = {
app_name : [ window.location.hostname ]
}
如果我使用一个字符串,它将加载正常,但这将通过Github进行管理,并且需要在应用程序加载时进行区分。
根据“os”模块的node.js文档,您需要加载“os”模块,该模块具有hostname()
函数:
var os = require("os");
var hostname = os.hostname();
但是,这只是主机名 - 没有域名(FQDN)。 没有简单的方法来获取FQDN。 您可以使用node.js DNS函数尝试将服务器的IP地址(使用os.networkInterfaces()
获取,请参阅上面的doc链接)到名称中。 唯一的问题是服务器可能有不同的接口和名称,因此您必须决定您想要哪一个。
您尝试使用window
对象,但仅存在于浏览器的JavaScript运行时环境中。 服务器端JavaScript显然没有window
,因此没有window
对象。 看到这个问题:“node.js是否与浏览器中的窗口对象相同” 。
有了这些信息你的问题有点奇怪 - 在浏览器window.location.hostname
是当前页面加载的URL的主机部分。 你如何将其转换为服务器上下文? 根据定义,您在node.js上运行的代码来自该服务器,因此您实际上并不需要此信息。 您(可能)在浏览器中需要它,因为该信息是可变的,尤其是当您运行mashup(来自各种源的JS代码)时,您的代码可能无法知道它运行的页面从何处加载。 在服务器上,您始终知道它是您的本地文件系统。
顺便说一下,你总是可以使用localhost
作为主机名:)
如果您正在运行带有http.createServer的服务器,则只能从window.location.hostname
获取相同的主机名。 在这种情况下,主机名是请求对象的属性之一:
request.headers.host
您可以使用
console.log(process.env.host);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.