Heroku build failing due to Yarn and npm lockfile conflict

15,998

Solution 1

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

Solution 2

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

Solution 3

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!

Solution 4

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.

Solution 5

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.

Share:
15,998

Related videos on Youtube

SeaWarrior404
Author by

SeaWarrior404

Updated on September 15, 2022

Comments

  • SeaWarrior404
    SeaWarrior404 over 1 year

    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.

  • joshuamabina
    joshuamabina about 6 years
    Why should git-push care about uncommitted changes? I think it should with or without "some changes".
  • Syam Sankar
    Syam Sankar almost 6 years
    This helped , Thanks
  • Delorme Grant
    Delorme Grant over 4 years
    Based on the original question this is the best answer!
  • Ali Seivani
    Ali Seivani over 3 years
    This must be marked as correct answer to the question.