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

181
Views
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 answers
Answer question

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 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!