Подтвердить что ты не робот

Node JS вернуть имя хоста

Я все еще изучаю Node JS и javascript и имею приложение. У меня есть файл конфигурации, где мне нужно захватить имя хоста сервера на Ubuntu 12.04

Я пробовал что-то вроде:

 window.location.hostname

Но это не сработало. Пример кода ниже:

exports.config = {
    app_name : [ window.location.hostname ]
}

Если я использую строку, она будет загружаться отлично, но это будет управляться через Github и должно быть дифференцировано при загрузке приложения.

4b9b3361

Ответ 1

В соответствии с в документации node.js для модуля "os" вам необходимо загрузить модуль "os", который имеет hostname():

var os = require("os");
var hostname = os.hostname();

Однако это только имя хоста - без имени домена (FQDN). Нет простого способа получить полное доменное имя. Вы можете использовать функции node.js DNS, чтобы попытаться повернуть IP-адрес сервера (который вы получаете с помощью os.networkInterfaces(), см. doc link выше) в имя. Единственная проблема заключается в том, что у серверов могут быть разные интерфейсы и имена, поэтому вы должны принять решение о том, какой из них вам нужен.

Вы пытались использовать объект window, но это только существует в среде выполнения JavaScript для браузеров. На стороне сервера JavaScript нет окон, очевидно, поэтому нет объекта window. См. этот вопрос: "Имеет ли node.js эквивалент оконному объекту в браузере" .

С этой информацией ваш вопрос немного странный - в браузере window.location.hostname находится основная часть URL-адреса, с которой была загружена текущая страница. Как вы переводите это в контекст сервера? Код, который вы запускаете на node.js, находится на этом самом сервере по определению, поэтому вам действительно не нужна эта информация. Вы (возможно) нуждаетесь в ней в браузере, потому что эта информация является переменной, особенно когда вы запускаете mashups (JS-код из разных источников), ваш код может не знать, куда загружается страница, с которой она запускается. На сервере вы всегда знаете его локальную файловую систему.

Кстати, вы всегда можете использовать localhost как имя хоста:)

Ответ 2

Вы можете получить то же имя хоста, которое вы получите от window.location.hostname, если вы используете сервер с http.createServer. В этом случае имя хоста является одним из свойств объекта запроса:

request.headers.host

Я бы с радостью отнесся к этому ответу, но я здесь только потому, что не знал ответа. Я нашел ответ, опубликованный на этом SO ответе.

Ответ 3

Вы можете использовать process.env, который возвращает некоторые полезные поля:

  • USERDOMAIN
  • USERNAME
  • SystemDrive
  • ENV
  • APPDATA
  • NODE_PATH
  • OS

И многое другое.

Затем, например, вы можете использовать:

console.log(process.env.OS);

Что вернет:

Windows_NT

Ответ 4

Вы можете использовать

console.log(process.env.host);