Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Node JS return hostname

I'm still learning Node JS and javascript and have an app. I have a configuration file where I need to grab the hostname of the server on Ubuntu 12.04

I tried something like:

 window.location.hostname 

But that did not work. Sample code below:

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

If I use a string, it will load fine, but this is going to be managed through Github and needs to be differentiated when the app loads.

like image 591
nocode Avatar asked Dec 12 '13 20:12

nocode


People also ask

How do I find the hostname in node JS?

To get the name or hostname of the OS, you can use the hostname() method from the os module in Node. js. /* Get hostname of os in Node. js */ // import os module const os = require("os"); // get host name const hostName = os.

How do I find my hostname Express?

We can use the req. hostname property to get the hostname from a current incoming request in express. Example: const express = require("express"); const app = express(); app.

What is OS hostname?

The os. hostname() method is an inbuilt application programming interface of the os module which is used to get host name of the operating system. Syntax: os.hostname()

How do I get the full URL in node JS?

To get the full URL in Express and Node. js, we can use the url package. to define the fullUrl function that takes the Express request req object. And then we call url.


2 Answers

According to the node.js documentation for the "os" module you need to load the "os" module, which has a hostname() function:

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

However, that only is the hostname - without the domain name (the FQDN). There is no easy way to get the FQDN. You could use the node.js DNS functions to try to turn the IP address of the server (which you get with os.networkInterfaces(), see doc link above) into a name. The only problem is servers may have different interfaces and names, so you have to make a decision about which one you want.

You tried using the window object, but that only exists in the JavaScript runtime environment of browsers. Server side JavaScript doesn't have windows, obviously, so there is no window object. See this question: "Does node.js have equivalent to window object in browser".

With this information your question is a little strange - in the browser window.location.hostname is the host part of the URL the current page was loaded from. How do you translate that to a server context? The code you run on node.js is from that very server, by definition, so you don't actually need this information. You (may) need it in the browser because that information is variable, especially when you run mashups (JS code from various sources) your code may not know where the page it runs on was loaded from. On the server you always know it's your local filesystem.

By the way, you can always use localhost as the hostname :)

like image 173
John Smith Avatar answered Sep 19 '22 09:09

John Smith


You can only get the same host name you would get from window.location.hostname if you're running a server with http.createServer. In that case, the host name is one of the properties of the request object:

request.headers.host 

I'd love to take credit for this answer, but I'm only here because I didn't know the answer. I found the answer posted at this SO answer.

like image 25
Vince Avatar answered Sep 19 '22 09:09

Vince