Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
Express Router: tengo problemas para que mis rutas funcionen, la página no se carga

Tengo un problema para que mi backend funcione... sinceramente, ni siquiera se está cargando, obtengo el registro de que el servidor se ha iniciado pero al ingresar en http://localhost:5000/api/items se carga indefinidamente. No estoy seguro de lo que estoy haciendo mal.

Este es mi servidor.js

 const express = require('express'); const bodyParser = require('body-parser'); const routes = require('./items-routes'); const server = express(); server.use(bodyParser.json); server.use('/api/items', routes); const port = 5000; try { server.listen(port); console.log(`Listening on port ${port}`); } catch (error) { console.log(error.message); }

Aquí está mi items-routes.js

 const express = require('express'); const itemsController = require('./items-controller'); const router = express.Router(); router.get('/', itemsController.getItems); router.post('/:iid', itemsController.createItem); module.exports = router;

Y finalmente mi items-controller.js

 const Item = require('./items-schema'); const items = [ { title: 'This is a title', description: 'This is a description', }, { title: 'This is another title', description: 'This is another description', }, { title: 'This is a third title', description: 'This is a third description', }, ]; const getItems = async (req, res, next) => { res.json({ items: items.map((item) => { item.toObject({ getters: true }); }), }); console.log('These are the ITEMS!'); }; const createItem = async (req, res, next) => { const { title, description } = req.body; const createdItem = new Item({ title, description, }); try { items.push(createItem); console.log('You are posting an ITEM!'); } catch (error) { return next(error); } res.status(201).json({ item: createdItem }); }; exports.getItems = getItems; exports.createItem = createItem;

Inicialmente tenía una configuración de mongoose para crear un backend adecuado, pero ahora tengo elementos ficticios para resolver este problema antes de continuar. El servidor nunca funcionó, pero tengo un proyecto similar que funcionó.

Tengo la sospecha de que no estoy entendiendo router.use/get/post correctamente, pero he intentado leer la documentación y solo me confundo más.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En realidad, todo su código está 100% bien, acaba de aplicar la función de middleware bodyParser.json incorrectamente. La función bodyParser.json no es una función de middleware en sí misma, es una función que toma un objeto de opciones, luego, cuando se llama, devuelve una función de middleware.

Entonces, para arreglar su código, solo necesita agregar () para llamar a la función:

 const express = require('express'); const bodyParser = require('body-parser'); const routes = require('./items-routes'); const server = express(); server.use(bodyParser.json()); // <- Call the bodyParser.json() function server.use('/api/items', routes); const port = 5000; try { server.listen(port); console.log(`Listening on port ${port}`); } catch (error) { console.log(error.message); }

La razón por la que se colgó para siempre es porque Express estaba esperando que la función bodyParser.json llamara a next() antes de seguir adelante; sin embargo, nunca hace eso, por lo que simplemente se cuelga.

Nota al margen:

Por cierto, ya no necesita el módulo body-parser si está utilizando la última versión de Express. Su código se puede cambiar a esto:

 server.use(express.json());

Y funcionará igual sin la dependencia adicional.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda