Фикс 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, я обратил внимание на следующее:
Посмотрев на логи 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 минут (в логах были видны все скомпилированные файлы, чего небыло ранее).