Actualmente estoy trabajando en un proyecto de nodejs
y tengo una pregunta simple. Quiero servir algunas bibliotecas de mi carpeta node_modules
estáticamente al cliente ( tal vez estúpido, pero no relevante para la pregunta ), pero no quiero tirar a la basura mi archivo JS del servidor principal con todos estos archivos servidos estáticamente como este:
const express = require('express'); const app = express(); // Imports here app.use('/assets/lib/bootstrap', './node_modules/bootstrap/dist'); app.use('/assets/lib/axios', './node_modules/axios/dist'); app.use('/assets/lib/aos', './node_modules/aos/dist'); app.listen(3000, () => { console.log('Server listening on port 3000'); });
Si tengo más de 10 importaciones, esto destruiría mi archivo Server JS, que me gusta mantener lo más limpio posible. Me preguntaba por qué esta opción no funcionaría:
./routes/route1.js
:
const express = require('express'); const router = express.Router(); const path = require('path'); // Imports here router.use('/bootstrap', path.resolve(__dirname, 'node_modules/aos/dist')); router.use('/axios', path.resolve(__dirname, 'node_modules/aos/dist')); router.use('/aos', path.resolve(__dirname, 'node_modules/aos/dist')); // path to node_modules file is not the problem here module.exports = router
Y en mi archivo principal de Server JS:
const express = require('express'); const app = express(); const route1 = require('./routes/route1'); // Imports here app.use('/assets/lib', route1); app.listen(3000, () => { console.log('Server listening on port 3000'); });
Pero esto me da un error. El archivo no se sirve estáticamente al cliente. ¿Es esto porque un enrutador rápido no puede servir archivos estáticos? Tal vez este sea un error de novato, pero se agradece cualquier ayuda. El primer fragmento de código funciona, pero trato de mantener mi código organizado.
Utilice el middleware express.static en su archivo route1.js en lugar de simplemente pasar la cadena de ruta de la carpeta a la ruta.