rails testのエラー解決メモ

Error:
StaticPagesControllerTest#test_should_get_home:
ActionView::Template::Error: Webpacker can't find application in /home/ubuntu/environment/hoge/public/packs-test/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:
{
}

   app/views/layouts/application.html.erb:9
   test/controllers/static_pages_controller_test.rb:5:in `block in <class:StaticPagesControllerTest>'


rails test test/controllers/static_pages_controller_test.rb:4


railstutorial第3章でrails testを行った時に起きたエラーです。解決してくれたのがこの記事

この記事のwebpackエラーの対処方法通りに行ったら難なく解決したので、どうしてエラーが起きたのかyarnってなんだを調べようと思います。

yarnはJavaScriptを使えるようにしてくれるパッケージマネージャーらしいです。他におんなじようなのとしてnpmというパッケージマネージャーがあるみたいです。

/home/ubuntu/environment/hoge/public/packs-test/manifest.json

をWebpackerが見つけられないです。って言われているので参照記事通りに$bin/yarn

ubuntu:~/environment/hogehoge $ bin/yarn
yarn install v1.22.4
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.89s.

$bin/yarnで全てのパッケージと依存関係をインストールしてくれるらしいです。一度実行したあとなのでAlready up-to-date.になってますね。その後コンパイルのために$bin/webpackを実行するようです。

ubuntu:~/environment/hogehoge $ bin/webpack
Hash: 32e57f147dbdcbbf0c82
Version: webpack 4.43.0
Time: 1573ms
Built at: 07/12/2020 1:49:04 AM
                                    Asset       Size       Chunks                         Chunk Names
   js/application-bbe9c4a129ab949e0636.js    124 KiB  application  [emitted] [immutable]  application
js/application-bbe9c4a129ab949e0636.js.map    139 KiB  application  [emitted] [dev]        application
                            manifest.json  364 bytes               [emitted]              
Entrypoint application = js/application-bbe9c4a129ab949e0636.js js/application-bbe9c4a129ab949e0636.js.map
[./app/javascript/channels sync recursive _channel\.js$] ./app/javascript/channels sync _channel\.js$ 160 bytes {application} [built]
[./app/javascript/channels/index.js] 211 bytes {application} [built]
[./app/javascript/packs/application.js] 749 bytes {application} [built]
[./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 552 bytes {application} [built]
   + 3 hidden modules

$bin/webpackでmanifest.jsonファイルの文字が。manifest.json ファイルとは、WebExtension API を使う拡張機能に必ず含めなければならない唯一のファイルです。manifest.json を使うことで、拡張機能の名前やバージョンといった基本的なメタデータを指定したり、拡張機能の機能的な側面として、例えばバックグラウンドスクリプトやコンテンツスクリプト、ブラウザーアクションを指定することもできます。とのこと。

manifest.jsonの中身は下のようになっており、さっき作られたapplication-beb94e39e00d815806de.jsとapplication-beb94e39e00d815806de.js.mapの名前を短縮して利用できるようにしている?っぽいことが書いてあります。

{
 "application.js": "/packs-test/js/application-beb94e39e00d815806de.js",
 "application.js.map": "/packs-test/js/application-beb94e39e00d815806de.js.map",
 "entrypoints": {
   "application": {
     "js": [
       "/packs-test/js/application-beb94e39e00d815806de.js"
     ],
     "js.map": [
       "/packs-test/js/application-beb94e39e00d815806de.js.map"
     ]
   }
 }
}

$bin/yarnで必要なものをインストールして$bin/webpackでコンパイルしてついでにfailをまとめてるのかな?学習を続けていってわかる時がきたら追記します。

この記事が気に入ったらサポートをしてみませんか?