Фикс Webpacker can't find application.js in /../../packs/manifest.json

После обновления webpack / webpacker в RoR приложении была выявлена следующая ошибка на production-сервере (heroku):

Webpacker::Manifest::MissingEntryError: Webpacker can't find application in /app/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
При этом, локально и на CI все отлично отрабатывает. После поисков в сети, кучи проб и ошибок - ничего не помогло.

Посмотрев на логи CI, я обратил внимание на следующее:

remote:        One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:        
remote:         - webpack-cli (https://github.com/webpack/webpack-cli)        
remote:           The original webpack full-featured CLI.        
remote:        We will use "yarn" to install the CLI via "yarn add -D".        
remote:        Do you want to install 'webpack-cli' (yes/no):         
remote:        yarn run v1.16.0        
remote:        $ /tmp/build_80.../node_modules/.bin/webpack --config /tmp/build_80.../config/webpack/production.js        
remote:        Done in 0.12s.

Странным мне показалось время компиляции (обычно это около 5 минут). А также замечание по поводу webpack-cli.

Еще одна попытка найти решение увенчалась успехом. Оказалось, что webpack-cli нужны вынести из devDependencies. 

Для фикса:
  • удаляем webpack-cli из devDependencies блока в package.json
  • добавляем заново через yarn add webpack-cli

Следующий деплой прошел успешно. Замечания по поводу webpack-cli небыло, а времени на билд ушло как положено около 5 минут (в логах были видны все скомпилированные файлы, чего небыло ранее).
Наверх