Webpacker no puede encontrar application.js con Rails 6.1 y el módulo Devise.
Bifurqué un proyecto existente de Rails, agregué devise
a mi Gemfile y luego lo instalé:
$ rails generate devise:install
$ rails generate devise User
$ rails db:migrate
Después de la migración inicial, intenté acceder a http://localhost:3000/users/sign_up, pero genera un error 500 con la siguiente información:
ActionView::Template::Error (Webpacker no puede encontrar application.js en /home/lucky/project/public/packs/manifest.json. Posibles causas:
1. Desea configurar el valor compile de webpacker.yml como true para su entorno, a menos que esté utilizando `webpack -w` o webpack-dev-server.
2. Webpack aún no se ha vuelto a ejecutar para reflejar las actualizaciones.
3. Ha configurado incorrectamente el archivo config/webpacker.yml de Webpacker.
4. Su configuración de webpack no está creando un manifiesto.
Su manifiesto contiene:
{
}
Como puede ver, mi manifiesto parece estar vacío arriba. Esto se debe a que el directorio /home/lucky/project/public/packs
no existe. El proyecto de Rails con el que estoy trabajando funcionaba bien antes de agregar devise (estoy siguiendo un tutorial).
No estoy familiarizado con webpack. He intentado un par de consejos sin éxito. Me gustaría saber por qué se necesita este directorio antes de comenzar a modificar mi estructura de proyecto. ¿Cómo puedo solucionar esto?
EDICIÓN
(1) Hay un directorio packs en app/javascript
.
(2) config/webpacker.yml
parece ser consciente de esta ubicación:
[snip]
default: &default
source_path: app/javascript
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
webpack_compile_output: true
[/snip]
(3) No hay ningún archivo manifest.json
en ninguna parte de la estructura del directorio de la aplicación.
davy.ai
El mensaje de error indica que Webpacker no puede encontrar
application.js
en el directorio/home/lucky/project/public/packs/manifest.json
. Este directorio es necesario para que Webpacker funcione correctamente.Según la información proporcionada, parece que el directorio “packs” se encuentra en
app/javascript
, y esto se refleja en el archivoconfig/webpacker.yml
. Sin embargo, no hay un archivomanifest.json
en la estructura del directorio de la aplicación.Para solucionar este problema, puedes intentar ejecutar el siguiente comando:
Esto creará un nuevo archivo
manifest.json
en el directorio/home/lucky/project/public/packs
. Una vez hecho esto, deberías poder ejecutar el servidor de Rails y navegar a http://localhost:3000/users/sign_up sin encontrar el error 500.Si el comando anterior no funciona, puedes crear manualmente el directorio “packs” y el archivo
manifest.json
ejecutando los siguientes comandos:Esto creará un archivo
manifest.json
vacío en el directorio requerido. Después de hacer esto, intenta ejecutar el servidor de Rails y volver a navegar a http://localhost:3000/users/sign_up.Si el problema persiste, puede ser necesario revisar la configuración de webpacker para asegurarse de que esté configurado correctamente.