Search code examples
node.jshttphttpserver

req.query is not working in Http.createserver in nodejs?


Hai Everyone I'm beginner in NodeJS I could not get the value whatever given the data in the get request.It shows the error "Cannot read property 'user' of undefined".This is the url which I given in the browser is http://localhost:8086/dopath?user=viki&pass=vino I attached the code.can anyone solve this issue?Thanks in advance...

"use strict";
let http=require('http');
let url=require("url");
let port=process.env.PORT||8086;
function handler(req,res)
{
    if(req.url!="/favicon.ico")
    {
        let urldata=url.parse(req.url);
        console.log(urldata);
        console.log("Request Method:"+req.method);
        console.log("Request URL:"+req.url);
        console.log("Username:"+req.query.user);
        console.log("Password:"+req.query.pass);
        res.statusCode=200;
        res.setHeader('content-Type','text/plain');
        res.end("I 'm sending data username is "+`${req.query.user}`+"and password is "+`${req.query.pass}`);
    }
}
let server=http.createServer(handler);
server.listen(port,()=>{
    console.log("server is listening on port",`${port}`);
});


Solution

  • Please use spaces in your code, hard to read otherwise. Also use const instead of let when variable won't change. You forgot to use the parsed urlData.

    Try this:

    'use strict'
    
    const http = require('http')
    const url = require('url')
    const port = process.env.PORT || 8086
    
    function handler (req, res) {  
      if (req.url !== '/favicon.ico') {
        const urlData = url.parse(req.url, true)
    
        console.log(req.query)
        console.log(urlData)
        console.log('Request Method:' + req.method)
        console.log('Request URL:' + req.url)
        console.log('Username:' + urlData.query.user)
        console.log('Password:' + urlData.query.pass)
        res.statusCode = 200
        res.setHeader('content-Type', 'text/plain')
        res.end("I 'm sending data username is " + `${urlData.query.user}` + 'and password is ' + `${urlData.query.pass}`)
      }
    }
    
    const server = http.createServer(handler)
    
    server.listen(port, () => {
      console.log('server is listening on port', `${port}`)
    })