Ответ 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
как имя хоста:)