Tengo un problema de JS con mi primera aplicación Rails, que sospecho que está relacionado con mi uso de mapas de importación en lugar de Webpack. He buscado y buscado pero no he encontrado ninguna discusión al respecto.
Es una aplicación de Rails 6 con algo de JS a través de Stimulus, que instalé agregando importmap-rails y luegostimul- stimulus-rails . Funciona bien localmente, pero en producción en Heroku, JS no funciona y veo errores como este en la consola del navegador: Uncaught (in promise) Error: Unknown Content-Type "text/html; charset=utf-8" doFetch https://plainreading.herokuapp.com/assets/es-module-shims-424762490b07cc7f9a37745e8b53356bca11997a8e313f47d780e29009df7e8e.js:580
Me pregunto si es porque eliminé Webpack de mi aplicación, utilizando Cómo eliminar completamente el paquete web y todas sus dependencias de la aplicación Rails . Lo eliminé porque estaba recibiendo errores de compilación relacionados con Webpack en Heroku, y tengo entendido que no necesito Webpack si uso mapas de importación.
Hace un tiempo solucioné un problema similar en un sitio estático en Netlify al incluir esto en su configuración de netlify.toml :
[[headers]] for = "/*.js" [headers.values] Content-Type = "text/javascript; charset=utf-8"No pude encontrar ninguna configuración similar para Heroku. Entonces intenté personalizar los encabezados de respuesta en la aplicación, pero no pude encontrar una manera de hacerlo para mis archivos JS, solo para la respuesta HTML principal y para los activos públicos.
Aquí está el repositorio en caso de que ayude: https://github.com/fpsvogel/plainreading
Al final resolví el problema haciendo lo siguiente:
rails _7.0.0.alpha2_ new importmap-test . (Puede usar -j para establecer una opción de agrupación de JS diferente, como -j esbuild , pero el valor predeterminado es importar mapas).app/javascript/controllers/index.js .Entonces mi JS funcionó sin errores.