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

201
Vistas
Express.js: anteponga la subruta a todas las rutas definidas

Digamos que tengo una aplicación Express definida en un archivo, digamos server.js así:

 const app = express(); app.use('/foo', foo); app.use('/bar', bar); module.exports = app;

Importo esta aplicación Express en otro archivo, digamos index.js :

 const app = require('./server'); const port = process.env.PORT || 3000; const listen = (port) => { app.listen(port, () => { console.log(`Backend listening on port ${port}!`); }); }; listen(port);

Ahora, las rutas que están disponibles para esta aplicación son /foo y /bar .

¿Hay alguna forma de editar la configuración en el archivo index.js para que las rutas se conviertan en /api/foo y /api/bar ? Sin tocar el archivo server.js .

Caso de uso:

Tengo una aplicación Nuxt.js con un backend que se carga en la aplicación Nuxt a través de la propiedad serverMiddleware en nuxt.config.js así:

 serverMiddleware: [ ... { path: '/api', handler: '~/server.js' }, ],

Esto tiene un efecto similar al que describí anteriormente: importa la aplicación express de la aplicación server.js y antepone todas sus rutas con /api .

Sin embargo, a menudo no quiero desarrollar la parte frontal de la aplicación Nuxt , solo quiero hacer cambios en el backend. Para este propósito, tengo un archivo de ayuda como index.js arriba, que se ejecuta solo en el backend. (Frontend a menudo toma mucho tiempo para compilar, es por eso que no quiero compilarlo cuando no lo necesito).

Esto crea el problema de que todas las rutas son ligeramente diferentes: carecen de /api al principio. Las rutas se están utilizando en diferentes herramientas como Postman, etc. y de repente no funcionaban.

Mi solución actual es definir el archivo index.js de la misma manera que el archivo server.js con todas las rutas definidas como las quiero, en lugar de app.use('/foo', foo); hay app.use('/api/foo', foo); etc. pero esto tiene sus propios problemas, por ejemplo, si cambio server.js , tengo que cambiar index.js . Busco algo más elegante.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De acuerdo con los documentos express 4.0 https://expressjs.com/en/4x/api.html#app.use , puede usar una instancia de application de la misma manera que lo haría con un router . En resumen, simplemente use la exportación de su server.js como un middleware en la ruta en la que desea insertarlo, en lugar de llamar directamente a .listen() en él.

Aquí hay un código de demostración que funcionó para mí:

 const express = require('express'); const app_inner = express(); app_inner.use('/foo', (req,res) => res.send('foo')); const app_outer = express(); app_outer.use('/foo2', app_inner); app_outer.listen(9999); // web browser at localhost:9999/foo2/foo returns 'foo' as expected
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