はじめに
2023/6/14時点の現在、以下の環境でRailsアプリを作成し、Herokuにデプロイしようとするとエラーが多発する状態です。エラーが出る根本的な原因はわからないのですがデプロイをするところまで出来たので方法をシェアします。
#6/17追記
AWSデプロイ時に出たbabelエラーにも同じ対応で解消できたので記事タイトルを変更
環境
Ruby 3系
Ruby on Rails 6.1系
Two different lockfiles found.package-lock.json and yarn. lock
rails new
で作成したアプリにpackage-lock.json と yarn. lockの両方あると発生するエラー。
どちらかを消せば解決します。
git rm package-lock.json
今回は上のコードを実行しpacage-lockを消します。
実行後、git add , git commitをして git push heroku master
をすると以下のトラブルがでます。
The Ruby version you are trying to install does not exist on this stack.
Rails6.xx系はHeroku-22に対応してないのでこのエラーが出ます。
heroku stack:set heroku-20
をターミナルで実行すれば解決します。
上のコードを実行後 git push heroku master
をすると以下のトラブルが発生。
Failed to install gems via Bundler.
エラー文にある通りx86_64-linuxをロックする必要があるときに出るエラー。
bundle lock --add-platform x86_64-linux
を実行後git add ,git commitをすると解決します。
上のコードを実行後 git push heroku master
をすると以下のトラブルが発生。
Error: Cannot find package '@babel/plugin-proposal-private-property-in-object'
最近、@babelがアップグレードしたことに起因するエラー?
yarn upgrade @babel/core
をターミナル上で実行
次にアプリのpackage.jsonに
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
"webpack-dev-server": "^3",
"@babel/core": "^7.0.0"
の3行を追加。
本番環境で使用したいので"dependencies"配下に追記する必要があります。
”devDependencies"配下に追記しない様に注意
git add , git commitで解決します。
上のコードを実行後 git push heroku master
をすると以下のトラブルが発生。
error Your lockfile heeds to be updated……--frozen-lockfile'
error Your lockfile heeds to be updated, but yarn was run with
--frozen-lockfile'
yarn.lock
ファイルのバージョンが異なっているためBuildで失敗しているらしいです。
yarn install
をターミナルで実行後、git add , git commitで解決します。
Error: error:0308010C:digital envelope routines…
Error: error:0308010C:digital envelope routines: :unsupported
HerokuにおいてNode.jsのデフォルトバージョンが18系になっていることが原因。
package.jsonに
"engines": {
"node": "16.x"
}
}
をターミナルで実行後、git add , git commitで解決します。
以上のトラブルを乗り越えると無事、Herokuにデプロイすることができました。