初めに
原因は細かに追求していません。(調べたけどわかりませんでした)
あくまでも解決方法をまとめています。
エラー内容
Railsアプリを新規作成し、諸々初期設定を終え、いざbin/rails s
してブラウザで表示すると、下記のエラー文が表示。
エラー内容は、1.You〜に書いてある通り,webpackerの設定がコンパイルしないようになっていることが原因のよう。
javascript_pack_tag
がレイズされてるのはなぜなのか、、。
webpackerでコンパイルしない設定になっているのに、JSをwebpackerでコンパイルする記述になっているから?
Webpacker::Manifest::MissingEntryError
Webpacker can't find application in /Users/"ユーザ名"/app/public/packs/manifest.json.
Possible causes:
- 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. - webpack has not yet re-run to reflect updates.
- You have misconfigured Webpacker's config/webpacker.yml file.
- Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
開発環境
- ruby 2.6.5
- rails 6.0.0
解決までの道筋
1. webpackerをインストールして、webpackerを用いたコンパイルを実行
ターミナルにて対象のRailsアプリのディレクトリで下記コマンドを実行
rails webpacker:install
rails webpacker:compile
しかし、解決せず。同様のエラーが発生。
2. Gemfileを書き換え
gem 'webpacker', '~> 5.0’
に書き換え
3. package.jsonに"@rails/webpacker": "5.4.3"
を追記
"dependencies": {
略
"@rails/webpacker": "5.4.3"
4. yarn.lock
削除
yarn install
する前にyarn.lock
を削除。
削除せずにyarn install
すると、先ほどの変更が反映されないため。
(yarn.lock
を元にyarn install
されてしまう。)
5. yarn install
と yarn add node-sass
を実行
3.で行った変更を反映させる。
6. 再度コンパイル実行
rails webpacker:install
rails webpacker:compile
7. 解決!
webpackerでコンパイルできるようになりました。
終わりに
本エラーは2回再現されたため、メモとして残す。
せっかくなのでなぜこのエラーが発生するのかまで追求したかったのですが、分からず。
以下調べた内容をまとめる。
Rails6はデフォルトの設定だとSprocketsとWebpackerを併用することにより、アセットファイルのコンパイルを行っている。WebpackerはJavaScriptファイル、Sprocketsはその他のアセット(CSSや画像など)のコンパイル。
今回のエラーはWebpackerでのコンパイルが動作していなかった。
参考記事
https://qiita.com/negisys/items/2bf88659f584fe45b686
https://qiita.com/hryau6/items/820d0b404325688574ba