Nuxtで作成したプロジェクトをいざHerokuにデプロイしようとしたときに以下のエラーが出ました。
To https://git.heroku.com/xxxxx-xxxxx.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/xxxxx-xxxxx.git'
Herokuは数ヶ月前に使っていたことがあり、前回と同じような手順でデプロイしてみましたが、ダメでした。このエラーの内容を辿っていくと
-----> Building dependencies
Installing node modules (yarn.lock)
yarn install v1.13.0
[1/4] Resolving packages...
error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed
! Outdated Yarn lockfile
Your application contains a Yarn lockfile (yarn.lock) which does not
match the dependencies in package.json. This can happen if you use npm
to install or update a dependency instead of Yarn.
Please run the following command in your application directory and check
in the new yarn.lock file:
$ yarn install
$ git add yarn.lock
$ git commit -m "Updated Yarn lockfile"
$ git push heroku master
https://kb.heroku.com/why-is-my-node-js-build-failing-because-of-an-outdated-yarn-lockfile
! Push rejected, failed to compile Node.js app.
! Push failed
このあたりでBuildが失敗しているようです。
今回のNuxtのプロジェクトではyarn
は使っていなかった(と思う)ですが、どうやらこのyarn.lock
ファイルのバージョンが異なっているためBuildで失敗しているようです。この現象はyarnの代わりにnpmを使っていると起こりうるようです。そこで、プロジェクトでyarn
を更新し、yarn.lock
をコミットしてから再度Herokuへデプロイしたところ、無事にデプロイできました。
更新
yarn
commit
git add yarn.lock
git commit -m"Update yarn.lock"
git push heroku master
heroku
remote: Verifying deploy... done.
To https://git.heroku.com/xxxxx-xxxxx.git
* [new branch] master -> master