Home > database >  NodeJS TypeError: Cannot convert object to primitive value while parsing query
NodeJS TypeError: Cannot convert object to primitive value while parsing query

Time:06-12

My index.js file looks like this

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

var server = http.createServer(function (req, res) {
  var parseUrl = url.parse(req.url, true);

  var path = parseUrl.pathname;

  var parsedurl = url.parse(req.url, true);

  // Get the path
  var path = parsedurl.pathname;
  var trimmedPath = path.replace(/^\/\/ $/, '');

  var queryStringObject = parsedurl.query;
  // Get the HTTP Method
  var method = req.method.toLowerCase();

  // Send the response
  res.end('Hello World\n');

  // Log the request path
  console.log(
    'Request received on path:'  
      trimmedPath  
      'with method'  
      method  
      'query'  
      queryStringObject
  );
});

server.listen(5000, function () {
  console.log(`Server is listening kamal`);
});

My terminal Error screenshot I don't know why I am facing this error, to the best of my knowledge the code looks correct ?

CodePudding user response:

You can't concatenate objects to strings. You could explicitly convert the queryStringObject to a string (e.g., by using JSON.stringify), but since you aren't using the parsed querystring and just want to display, you could just avoid parsing the querystring when you parse the URL:

var parseUrl = url.parse(req.url);
// Second arg (true) removed ---^

CodePudding user response:

Your error states that you are trying to use an object as a primitive value string, number, boolean.

url.parse(req.url,true).query returns an object, eg:{ foo: 'bad', baz: 'foo' }. You cannot simply add it to a string without prior conversion.

Try using JSON.stringify() :

 console.log('Request received on path:' trimmedPath 'with method' method 'query' JSON.stringify(queryStringObject));

or maybe takeout individual query params and add to the string (based on your use case).

  • Related