GitHub Actions:「Dependencies lock file is not found」
actions/setup-node にパッケージマネージャーのダウンロードのキャッシュを頼んでいて、キャッシュのキーはロックファイルのハッシュです。ハッシュを取るロックファイルが見つからず、何もインストールしないうちにステップが失敗しました。探すのは1か所だけ、ワークスペース(GITHUB_WORKSPACE)の一番上です。
見え方
Error: Dependencies lock file is not found in /home/runner/work/app/app. Supported file patterns: package-lock.json,npm-shrinkwrap.json,yarn.lock
- パターンは
cacheの値で変わります。npmは package-lock.json・npm-shrinkwrap.json・yarn.lock のどれか、yarnは yarn.lock だけ、pnpmは pnpm-lock.yaml だけです。 - すぐ前の行が「Detected npm as the package manager from package.json's packageManager field」なら、
cacheはそもそも書かれていません(3)。 cache-dependency-pathを使うと、同じ問題は「Some specified paths were not resolved, unable to cache dependencies.」になります(5)。
1. ロックファイルがサブフォルダーにある
アクションはワークスペースの一番上のファイルを並べるだけで、その下は見ません。defaults.run.working-directory にも従いません。これは run のステップにだけ効く設定です。ファイルの場所を教えます:
- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
cache-dependency-path: frontend/package-lock.json
プロジェクトが複数なら、アクションの詳しい使い方のガイドのように1行に1つずつ並べます(cache-dependency-path: |)。一番上の package.json が npm のワークスペースを宣言しているなら、npm はロックファイルを一番上に1つだけ置き、そこでの npm ci もそれを必要とします。pulsartrack では、そういう package.json を一番上に足したのにロックファイルは frontend/ と backend/ にしか無く、3つのジョブが setup-node で失敗しました(pulsartrack #1086)。
2. ロックファイルがリポジトリに無い
- 消した:site-lf-solucoes では、プルリクエストでロックファイルを消し、Lighthouse のワークフローは
cache: npmのままだったので、Setup Node が失敗してレポートが作られませんでした(site-lf-solucoes #19)。 - 最初から無い:フォークの Docusaurus のデプロイが、
package.jsonもロックファイルも無いツリーで、cache: npmつきの setup-node を走らせていました(home-assistant-frank_energie #9)。 - git が無視している:h-dashboard では、
.gitignoreにpackage-lock.jsonがあり、ファイルは追跡されたままなので、追跡を外す片付けをすると3つのジョブが壊れます(h-dashboard #1293)。どの規則かはgit check-ignore -v package-lock.jsonでわかります。
ロックファイルをコミットするか、インストールするものが無いなら cache を外します。
3. packageManager の欄でキャッシュが自動で入った
v5.0.0(2025年9月)から、一番上の package.json に "packageManager": "npm@…" か、npm を名指しする devEngines.packageManager があると、cache を書かなくてもキャッシュが始まります。v6.0.0 でこれは npm だけになりました。この欄があってロックファイルが無いリポジトリは、版を上げたところで失敗します。ロックファイルをコミットするか、切ります:
- uses: actions/setup-node@v7
with:
node-version: 24
package-manager-cache: false
README も、強い権限や機密情報に触れるワークフローでは、どのみち package-manager-cache: false にするよう勧めています。
4. コンポジットアクションが自分の Node を用意した
コンポジットアクションの中でも、setup-node が探すのはワークフローを走らせているリポジトリのワークスペースで、アクションのフォルダーではありません。a11ign では、アクションの中の cache: npm つきの setup-node が、npm のプロジェクトでない呼び出し側のリポジトリで毎回失敗しました(a11ign #568)。cache-dependency-path で /home/runner/work/_actions/… の下にあるアクションのロックファイルを指しても助かりません。パスはワークスペースの中でしか照合されず、「Some specified paths were not resolved」で失敗します(agentic-development-workflow #724)。アクション自身の依存には、cache を書かず、package-manager-cache: false にします。
5. 「Some specified paths were not resolved」
cache-dependency-path があると、アクションはそのパスにワークスペースから当たるファイルのハッシュを取り、1つも当たらなければこのメッセージで失敗します。sapphire-sh の共有のワークフローではパスが <working_directory>/package-lock.json で、呼び出し側は npm のワークスペースのメンバーのフォルダーを渡しましたが、そこにロックファイルはありません(github-actions #88)。ファイルのあるパスを書きます。詳しい使い方のガイドには、どの深さのロックファイルにも当たる '**/package-lock.json' の例もあります。
6. ファイルがチェックアウトされていない
actions/checkoutより前の setup-node には、空のワークスペースしか見えません。先にチェックアウトします。- 作業ディレクトリを残すセルフホストのランナーで、
package.jsonだけをチェックアウトしたジョブ(スパースチェックアウト)のあと、次のジョブにロックファイルがありませんでした。そのジョブのチェックアウトはエラーを出していません(SOFTURE AI #687)。GitHub がホストするランナーは、ジョブごとに新しいディレクトリで始まります。
見分け方
- setup-node のログの「npm cache is not found」(yarn・pnpm も同じ)はエラーではありません。このロックファイルで保存されたキャッシュがまだ無かっただけで、ステップは続きます。
- 「Caching for 'bun' is not supported」:
cacheに書けるのは npm・yarn・pnpm だけです。 - 「Unable to locate executable file: pnpm」:
cache: pnpmでは、setup-node より前に pnpm が入っている必要があります。詳しい使い方のガイドは先にpnpm/action-setupを走らせています。 actions/cacheで作ったキャッシュは、見つからないときの出方が違います:「Cache not found for input keys」。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「Cache not found for input keys」 · 「Failed to save: Unable to reserve cache with key」 · 「Node.js 20 is deprecated」の警告 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English