Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
TypeError: Cannot read property 'get' of undefined - node.js - url params

I am trying to get certain params from my client-side get request (which come from user input), to feed into an API get a request I send off on my server.

I get this error when using .get on my search_params variable. I am using the 'URL' node.js package.

not sure why it is undefined I followed this guide to work out a solution to what I am trying to solve - 1

Code below: (I commented out the two lines that are causing the error so it is easier for you to see)

const axios = require('axios');
const router = require('express').Router();
const url = require('url');
require('dotenv').config();

const bamboo_api_key = process.env.BAMBOO_API_KEY;

const config = {
    headers: {
        'Accept':'application/json' 
    }
};

router.get('/bamboo/absencees', (req, res) => {

    const full_url = req.protocol + '://' + req.get('host') + req.originalUrl;
    const search_params = full_url.searchParams;
    // const start = search_params.get('start')
    // const end = search_params.get('end')

    console.log("full url: ", fullUrl);
    console.log(end);
    console.log(sart);


    axios.get('https://'+bamboo_api_key+':x@api.bamboohr.com/api/gateway.php/velocitypartners/v1/time_off/whos_out/'+req.query.params, config)
    .then((response) => {
        console.log(response)
        console.log(req.query.params)
        res.send(response.data)
    })
    .catch(error => {
        console.log(error)
    });
})

module.exports = router;
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

From what I see full_url is just a concatenated string which obviously has no method/attribute searchParams like an object would have.

So we know that full_url.searchParams is undefined. This would evaluate to

const search_params = undefined

which results in your problem.

Did you use a debugger? It would be helpful to see what full_url looks like during run-time. Nonetheless, it being a string should be the problem here.

about 4 years ago · Juan Pablo Isaza Report

0

There is a small thing, you need to know and add. full_url is a string that doesn't have searchParams. So, make it a URL object and use their methods.



const axios = require('axios');
const router = require('express').Router();
const url = require('url');
require('dotenv').config();

const bamboo_api_key = process.env.BAMBOO_API_KEY;

const config = {
    headers: {
        'Accept':'application/json' 
    }
};

router.get('/bamboo/absencees', (req, res) => {

    const full_url = req.protocol + '://' + req.get('host') + req.originalUrl;
   const myURL = new URL(full_url); // make it an URL object to use its methods
    const search_params = myURL.searchParams;
    const start = search_params.get('start')
    const end = search_params.get('end')

    console.log("full url: ", fullUrl);
    console.log(end);
    console.log(sart);



// you can use string literal here
  axios.get(`https://${bamboo_api_key}:x@api.bamboohr.com/api/gateway.php/velocitypartners/v1/time_off/whos_out/${req.query.params}`  , config)
    .then((response) => {
        console.log(response)
        console.log(req.query.params)
        res.send(response.data)
    })
    .catch(error => {
        console.log(error)
    });
})

module.exports = router;
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!