22

I'm trying to deploy a React Web app on Heroku using the Heroku CLI. However when I run,

git push heroku master

from my project folder it throws an error as:

Counting objects: 213, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (212/212), done.
Writing objects: 100% (213/213), 515.89 KiB | 0 bytes/s, done.
Total 213 (delta 40), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Node.js app detected
remote: 
remote: -----> Build failed
remote:  !     Two different lockfiles found: package-lock.json and 
yarn.lock
remote: 
remote:        Both npm and yarn have created lockfiles for this 
application,
remote:        but only one can be used to install dependencies. 
Installing
remote:        dependencies using the wrong package manager can 
result in missing
remote:        packages or subtle bugs in production.
remote: 
remote:        - To use npm to install your application's 
dependencies please delete
remote:          the yarn.lock file.
remote: 
remote:          $ git rm yarn.lock
remote: 
remote:        - To use yarn to install your application's 
dependences please delete
remote:          the package-lock.json file.
remote: 
remote:          $ git rm package-lock.json
remote:     
remote:        https://kb.heroku.com/why-is-my-node-js-build-
failing-because-of-conflicting-lock-files
remote: 
remote:  !     Push rejected, failed to compile Node.js app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to MyAPP.
 remote: 
 To https://git.heroku.com/MyAPP.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 
https://git.heroku.com/MyAPP.git'

I did rm and removed the yarn lock file since I use npm. Still the same error shows up. Now when I actually do rm yarn.lock I get a no entry found in the terminal. Idk why Heroku CLI insists that I still have yarn lock file in the directory.

BinaryButterfly
  • 18,137
  • 13
  • 50
  • 91
SeaWarrior404
  • 3,811
  • 14
  • 43
  • 65

9 Answers9

37

If you use npm:

git rm yarn.lock
git commit -m "Remove yarn lock file"
git push heroku master

If you use yarn:

git rm package-lock.json
git commit -m "Remove npm lock file"
git push heroku master
Stephen Rauch
  • 47,830
  • 31
  • 106
  • 135
Amera Abdallah
  • 638
  • 7
  • 5
30

Are you committing back to your master branch before pushing it up to Heroku?

Most often for me, problems like this arise when I make a code change and then 'git push heroku master' but my master branch has not been updated as I haven't yet committed my local changes.

Try

git commit -m 'some changes'

then

git push heroku master
MorganIsBatman
  • 1,000
  • 8
  • 13
5

delete both yarn.lock and package-lock.json and after it:

git add --all 
git commit -a -m "Delete yarn lock and package lock"
git push 
git push heroku master

that works for me!

matan yemini
  • 141
  • 2
  • 4
1

I had the same problem, but the above suggestions didn't help. What I did was to delete yarn.lock (git rm yarn.lock) and the error was gone.

Yossi
  • 5,577
  • 7
  • 41
  • 76
1

I had the same issue, but in my case I was pushing the master branch which contained both package-lock.json and yarn.lock. I fixed this by using the command git push heroku branch-name:master.

Victor Ighalo
  • 151
  • 1
  • 7
1

If you use npm please follow this :

rm yarn.lock
git add .
git commit -m 'remove yarn.lock file'
git push origin
git push heroku origin
0

Had the same issue. Not sure how package-lock is being recreated upon deploying to heroku but thats what seems to be happening. Try creating a .npmrc file and adding package-lock=false This fixed the issue for me.

Cauliflower
  • 446
  • 4
  • 12
0

Also check if you need a buildpack for deploying to heroku.

For example for meteor you need to add a buildpack

heroku buildpacks:set https://github.com/AdmitHub/meteor-buildpack-horse.git

if you have multiple apps for that git make sure to add --app foobar as your app name to your heroku command

mcnk
  • 1,690
  • 3
  • 20
  • 29
0

In my case, I had to checkout main branch and run git push heroku main. this solved my problem

Guvanch
  • 838
  • 7
  • 10