Tengo un problema con un código de enrutamiento personalizado, todo funciona bien y está sincronizado con el enrutamiento de vista del lado del cliente que hago, pero tan pronto como tengo una subpágina, no enruta mis archivos estáticos correctamente.
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.En lugar de darme un archivo del directorio raíz, lo servirá como si fuera de la subcarpeta.
Ejemplo: voy a http://localhost/sign-up, y los archivos que se cargan en mi archivo de índice desde /scripts están cargados, pero si voy a http://localhost/sign-up/2, intentará cargar el script desde /registrarse/scripts
const express = require('express'); const path = require('path'); const app = express(); app.use('/views', express.static(path.resolve(__dirname, 'frontend', 'views'))); app.use('/styles', express.static(path.resolve(__dirname, 'frontend', 'styles'))); app.use('/scripts', express.static(path.resolve(__dirname, 'frontend', 'scripts'))); app.use('/media', express.static(path.resolve(__dirname, 'frontend', 'media'))); app.get('/*', (req, res) => { res.sendFile(path.resolve(__dirname, 'frontend', 'newSite.html')); }); app.listen(process.env.PORT || 1234, () => console.log('Server is now running...'));Para manejar esto, he estado siguiendo estos tutoriales de DCODE en youtube, pero no veo nada malo:
Los recursos cargados en la carpeta de registro deben usar direcciones URL que comiencen con un carácter ' / ', para hacerlos relativos a la raíz del sitio, por ejemplo
src="/scripts/modulefile.js" href="/css/stylesheet.css" href="/media/image.png" y no direcciones URL relativas a la carpeta de registro, que serán si se omite el '/' inicial.
No necesita múltiples rutas para servir sus contenidos estáticos, y el método static de express hace este tipo de tareas por usted:
// If your 'public' or 'static' directory is one of root directories app.use(express.static(process.cwd() + '/public')); // so all these requests will be served: // -> /public/styles/custom.css // -> /public/scripts/pollyfils.js // -> /public/media/logo.png