技術 約2分で読めます

【Next】npmが壊れたのでpnpmに切り替えた【React2Shell脆弱性】

背景

前回の記事でReact2Shell脆弱性(CVE-2025-55182 / CVE-2025-66478)について長々と対策メモを残していたが、まあアップデートすりゃいいだろ、ということで安易に進めた結果がこれである。

以下のアップデートを実行しようとした:

  • Next.js 16.0.3 → 16.0.7
  • React 19.2.0 → 19.2.1
  • react-dom 19.2.0 → 19.2.1

発生した問題

npm install が以下のエラーで繰り返しクラッシュ:

npm error Cannot read properties of null (reading 'matches')

試した対策(全て失敗)

  1. npm install → 失敗
  2. npm install --force → 失敗
  3. node_modulespackage-lock.json を削除してクリーンインストール → 失敗

いずれも同じ内部エラーで失敗。npm自体のバグまたはキャッシュ破損の可能性が高い。

解決策:pnpmへの切り替え

pnpm install

結果:20秒で正常完了

dependencies:
- next 16.0.3
+ next 16.0.7
- react 19.2.0
+ react 19.2.1
- react-dom 19.2.0
+ react-dom 19.2.1

Done in 20s

ビルドも成功:

✓ Next.js 16.0.7 (Turbopack)
✓ Compiled successfully in 2.9s
✓ Generating static pages (8/8)

まとめ

項目結果
脆弱性対策完了(CVE-2025-55182 / CVE-2025-66478)
パッケージマネージャーnpm → pnpm に変更
ビルド正常動作

原因は正直わからない。うちの環境固有の問題かもしれない。

ただ、npmは最近サプライチェーン攻撃やら何やらで汚染がひどいし、pnpmの方がまだマシな気がする。他のプロジェクトでもpnpm使ってるので、この機会に統一した。

まあGitのリポジトリを汚染されたわけでもないので、アプデで済むならアプデしてプッシュし直した方が早い。