在Node.js(在Windows上运行)如何获取域名

我有要求我的NodeJS http服务器(在Windows上)必须监听主机名而不是localhost / 127.0.0.1。

为此,我需要Windows机器的完整主机名(包括域名),我无法获得完整的主机名。

我试过使用

require('os').hostname() 

但是它并没有给我完整的主机名。

所以我试了下面:

 var dns = require('dns'); var os = require('os'); var hostname = os.hostname(); console.log("Short hostname = ", hostname); dns.lookup(hostname, function (err, add, fam) { if (err) { console.log("The error = ", JSON.stringify(err)); return; } console.log('addr: '+add); console.log('family: ' + fam); dns.reverse(add, function(err, domains){ if (err) { console.log("The reverse lookup error = ", JSON.stringify(err)); return; } console.log("The full domain name ", domains); }); }) 

上面的代码工作正常,当我在我的企业的以太网上时,我得到了下面的输出

 C:\>node getFullHostname.js Short hostname = SPANUGANTI addr: 16.190.58.214 family: 4 The full domain name [ 'spanuganti.abc.xyz.net' ] 

但是,当我连接到企业的无线networking时,相同的代码不起作用

 C:\>node getFullHostname.js Short hostname = SPANUGANTI addr: 16.183.204.47 family: 4 The reverse lookup error = {"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getHostByAddr"} 

所以在下面需要帮助

  1. 是否有一个简单的方法来获取Node.js中的完整机器名称(Windows)
  2. 或者请让我知道我的代码上面有什么问题

服务器不听主机名,他们监听IP地址。 你不应该依靠外部DNS的内容来找出绑定的位置。

最简单的解决方法是将其绑定到INADDR_ANY地址,该地址在数字上等于0.0.0.0

这将允许在任何接口上进行查询,包括环回。

你不需要完整的主机名来听,你实际上需要你的IP地址。 检查os.networkInterfaces()函数。