導入
Rails環境で、node_moduleをインストールしたら発生したエラー。
========================================
Your Yarn packages are out of date!
Please run `yarn install --check-files` to update.
========================================
To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).
yarn check v1.22.5
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
解決方法
このエラーは、package.jsonにあるパッケージコンテンツのバージョンとハッシュ値がyarn.lockに記載されているものと一致しない場合に表示される。
つまり、package.jsonとyarn.lockに記載しているもののバージョンを一致させれば良い。
※ 公式:コマンドリファレンス
1. yarn upgrade
を実行
# package.jsonで指定されたバージョン範囲に基づいて、依存関係を最新バージョンに更新。
$ yarn upgrade
2. package.jsonとyarn.lockを比較して、バージョンが一致しているかを確認
package.jsonとyarn.lockを比較すると、
- package.jsonでは、2.X.Xをダウンロードするように指定(当時、2.7.3が最新版)
- yarn.lockでは、package.jsonで
^2.7.3
と指定されているので、2.9.4をダウンロードしている。
※ 参考:package.json:リファレンス
package.json
"dependencies": {
"chart.js": "^2.7.3"
}
yarn.lock
chart.js@^2.7.3:
version "2.9.4"
resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz#0827f9563faffb2dc5c06562f8eb10337d5b9684"
integrity sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==
dependencies:
chartjs-color "^2.1.0"
moment "^2.10.2"
したがって、package.jsonのバージョン指定をyarn.lockのものと同様にする。
$ yarn upgrade chart.js@^2.9.4
"dependencies": {
- "chart.js": "^2.7.3"
+ "chart.js": "^2.9.4"
}
3. Railsを起動してみる
$ rails s
=> Booting Puma
=> Rails 6.X.X application starting in development
=> Run `rails server --help` for more startup options
[1] Puma starting in cluster mode...
[1] * Version 4.3.7 (ruby 2.X.X-p137), codename: Mysterious Traveller
[1] * Min threads: 5, max threads: 5
[1] * Environment: development
[1] * Process workers: 1
[1] * Preloading application
[1] * Listening on tcp://0.0.0.0:3000
[1] Use Ctrl-C to stop
[1] - Worker 0 (pid: 81) booted, phase: 0
4. Docker環境の場合
なぜ、解決出来たのかわからないが、Dockerを使用している場合
上記の方法でも解決出来なかったが、Dockerプロセスを削除し、再ビルドしたら解決する場合もあった。
$ docker rm (docker ps -q -a) # コンテナの全削除
$ docker-compose up