MeWrite Docs

pnpm: Lockfile is up to date, resolution step is skipped

pnpmでlockfileの競合や不整合が発生した場合のエラー

概要

pnpmでlockfileとpackage.jsonの不整合や、インストール時の問題が発生した場合の対処法です。

エラーメッセージ

 ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with package.json
 ERR_PNPM_PEER_DEP_ISSUES  Unmet peer dependencies
 WARN  Issues with peer dependencies found

解決策

1. lockfileを更新

1
2
3
4
5
# lockfileを再生成
pnpm install --no-frozen-lockfile

# または
pnpm install

2. キャッシュをクリア

1
2
3
4
5
6
# pnpmストアをクリーン
pnpm store prune

# node_modulesを削除して再インストール
rm -rf node_modules
pnpm install

3. ピア依存関係の解決

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// package.json
{
  "pnpm": {
    "peerDependencyRules": {
      "ignoreMissing": ["react", "react-dom"],
      "allowedVersions": {
        "react": "18"
      }
    }
  }
}

4. 厳格モードの設定

1
2
3
# .npmrc
strict-peer-dependencies=false
auto-install-peers=true

5. モノレポでのワークスペース設定

1
2
3
4
# pnpm-workspace.yaml
packages:
  - 'packages/*'
  - 'apps/*'
1
2
3
4
5
# ワークスペース全体をインストール
pnpm install

# 特定のワークスペースにパッケージを追加
pnpm add lodash --filter @myapp/web

6. 特定のバージョンを強制

1
2
3
4
5
6
7
8
9
// package.json
{
  "pnpm": {
    "overrides": {
      "react": "^18.2.0",
      "typescript": "^5.0.0"
    }
  }
}

7. シンボリックリンクの問題

1
2
3
4
5
6
# .npmrc
shamefully-hoist=true  # node_modules構造をフラットに

# または特定のパッケージのみ
public-hoist-pattern[]=*eslint*
public-hoist-pattern[]=*prettier*

8. CIでのインストール

1
2
3
4
5
# CI環境ではfrozen-lockfileを使用
pnpm install --frozen-lockfile

# または
CI=true pnpm install

9. バージョンの確認

1
2
3
4
5
6
7
8
9
# pnpmバージョンを確認
pnpm --version

# 必要なNode.jsバージョンを確認
pnpm env use --global 20

# corepackでpnpmを管理
corepack enable
corepack prepare pnpm@latest --activate

10. lockfile形式のアップグレード

1
2
# 新しいlockfile形式に更新
pnpm install --lockfile-only

デバッグ

1
2
3
4
5
6
7
8
# 詳細なログを出力
pnpm install --reporter=ndjson

# 依存関係ツリーを表示
pnpm why lodash

# 重複パッケージを確認
pnpm dedupe

関連エラー

関連エラー

最終更新: 2025-12-19