簡體   English   中英

Node JS返回主機名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM