5
var path = require('path');
module.exports = {
    site: {
        contactEmail: '[email protected]',
        baseUrl: "http://localhost:3000/",
        uploadPath: path.join(__dirname, '../public'),
        language:'en'
    },
    mongodb: {
         url: 'mongodb://localhost:27017/psp',
    }
}

I have set static baseUrl in my config file in node.js.How can I do dynamic in different servers?

like:-

var http = require('http');
var url = require('url') ;

http.createServer(function (req, res) {
  var hostname = req.headers.host; // hostname = 'localhost:8080'
  var pathname = url.parse(req.url).pathname; // pathname = '/MyApp'
  console.log('http://' + hostname + pathname);

  res.writeHead(200);
  res.end();
}).listen(8080);

var hostname = req.headers.host; // hostname = 'localhost:8080'

i want this type of output in my config file.

1 Answer 1

4

As all we know module.exports return a javascript object. so we can use get/set property for changing the value of any property of object.

module.exports={
  baseUrl : "/xyz",
  setBaseUrl : function(url){
    this.baseUrl = url;
  }
  getBaseUrl : function(){
    return this.baseUrl;
  }
}

var http = require('http');
var url = require('url') ;
var config = require('path/to/your/configFile');

http.createServer(function (req, res) {
  var hostname = req.headers.host; // hostname = 'localhost:8080'
   config.setBaseUrl(hostname);
  var pathname = url.parse(req.url).pathname; // pathname = '/MyApp'
  console.log('http://' + congif.getBaseUrl() + pathname);

  res.writeHead(200);
  res.end();
}).listen(8080);
Sign up to request clarification or add additional context in comments.

10 Comments

just call this setBaseUrl function where you get hostName from request. ` http.createServer(function (req, res) { var hostname = req.headers.host; // hostname = 'localhost:8080' //Here config is your module.exports object config.setBaseUrl(hostname); var pathname = url.parse(req.url).pathname; // pathname = '/MyApp' console.log('http://' + hostname + pathname); res.writeHead(200); res.end(); }).listen(8080);`
can i add protocol with hostname...this code is working for me only i have to add dynamic protocol (http or https).
Its your call to add protocol with hostname or not. I just suggest you the way how you can set dynamically baseUrl. If this is working for you than don't forgot to accept (mark) as an answer.
let me know what kind of help you need?
i have to add dynamic protocol (http or https).with req.headers.host
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.