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.
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.
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.
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()
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.
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 :)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With