npm EBADENGINEの原因と対処法

冒頭まとめ npm warn EBADENGINEは、パッケージが要求するNode.jsまたはnpmのバージョンを、現在の環境が満たしていないという警告です。最初に、ログのpackage、required、currentを確認します。 通常は警告として表示され、これだけではインストールを止めません。ただし、engine-strict=trueが有効な場合は、同じ不一致でnpm error code EBADENGINEとなり、インストールが停止する場合があります。 警告のままインストールできても、動作確認が済んだことにはなりません。プロジェクトが指定するNode.js・npmの版と、警告に出たパッケージの要件を合わせてから、インストールとテストをやり直してください。 EBADENGINEが示していること パッケージのpackage.jsonには、実行環境の要件をenginesとして記述できます。 { "engines": { "node": ">=24", "npm": ">=11" } } この例はNode.js 24以上、npm 11以上を要求しています。数値は説明用で、すべてのプロジェクトにこの版を推奨するものではありません。 npm公式文書のenginesの説明では、engine-strictが設定されていない場合、この指定は原則として助言的な扱いになると説明されています。 npm-install-checksの実装は、engines.nodeとengines.npmをそれぞれ現在の版と比較し、どちらかが条件を満たさなければEBADENGINEを生成します。Node.jsだけ確認しても、npm側の不一致が残ることがあります。 新しい版なら必ず通るわけでもありません。たとえば>=18 <24という要件では、Node.js 24は範囲外です。要求されている下限と上限の両方を確認します。 警告にある3項目を確認する 表示例は次のとおりです。パッケージ名と値は説明用です。npmの版によって、接頭辞がnpm WARNなどになることがあります。 npm warn EBADENGINE Unsupported engine { npm warn EBADENGINE package: 'example-package@1.2.3', npm warn EBADENGINE required: { node: '>=24', npm: '>=11' }, npm warn EBADENGINE current: { node: 'v22.0.0', npm: '11.0.0' } npm warn EBADENGINE } packageは要件に合わないパッケージと版、requiredはそのパッケージの要求、currentは実行時のNode.js・npmの版です。この例ではnpmの条件は満たしていますが、Node.jsの条件を満たしていません。 失敗した処理と同じターミナルやCIジョブで確認します。 node -v npm -v node -p "process.execPath" バージョン管理ツールを使っている場合、別のターミナルやIDEでは別のNode.jsが選ばれていることがあります。process.execPathは、実際に起動したNode.jsの場所を確認するために使います。 ...

2026年10月6日 · ErrorLog