Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

244
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda