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