web-dev-qa-db-ja.com

糸とnpmロックファイルの競合によりHerokuビルドが失敗する

React CLIを使用してHerokuにWebアプリをデプロイしようとしています。しかし、実行すると、

     git Push heroku master

私のプロジェクトフォルダーから、次のようなエラーがスローされます:

    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'

Npmを使用しているので、rmを実行し、yarnロックファイルを削除しました。それでも同じエラーが表示されます。ここで、実際にrm yarn.lockを実行すると、ターミナルでエントリが見つかりません。どうしてですか?Heroku CLIが、まだディレクトリに糸ロックファイルがあると主張するのはなぜですか。

9
SeaWarrior404

Herokuにプッシュする前にマスターブランチにコミットしていますか?

ほとんどの場合、コードの変更を行ってから「git Push heroku master」を実行すると、このような問題が発生しますが、ローカルの変更をまだコミットしていないため、masterブランチは更新されていません。

試す

git commit -m 'some changes'

その後

git Push heroku master
17

npmを使用する場合:

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

yarnを使用する場合:

git rm package-lock.json
git commit -m "Remove npm lock file"
git Push heroku master
12
Amera Abdallah

私は同じ問題を抱えていましたが、上記の提案は役に立ちませんでした。私がやったことは、yarn.lock(git rm yarn.lock)を削除することで、エラーはなくなりました。

1
Yossi

Npmを使用する場合は、次の手順に従ってください。

rm yarn.lock
git add .
git commit -m 'remove yarn.lock file'
git Push Origin
git Push heroku Origin
1
Tanat Jakphan

yarn.lockとpackage-lock.jsonの両方を削除し、その後に:

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

それは私のために働きます!

0
matan yemini

同じ問題がありましたが、私の場合、package-lock.jsonとyarn.lockの両方を含むマスターブランチをプッシュしていました。コマンドgit Push heroku branch-name:masterを使用してこれを修正しました。

0
wyz1

同じ問題があった。 herokuへのデプロイ時にパッケージロックがどのように再作成されるかはわかりませんが、それが起こっているようです。 .npmrcファイルを作成してpackage-lock=falseを追加してみてください。これで問題が解決しました。

0
Cauliflower

また、herokuにデプロイするためのビルドパックが必要かどうかも確認してください。

たとえば流星の場合、ビルドパックを追加する必要があります

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

そのgitに複数のアプリがある場合は、必ず--app foobar herokuコマンドのアプリ名として

0
picacode