npm6系で npm audit
を実行しようとした時に下記のようなステータスコード400のエラーが返ってくることがあります。
terminal
npm ERR! code E400
npm ERR! 400 Bad Request - POST https://registry.npmjs.org/-/npm/v1/security/audits
- npm audit returns 400 from registry when non-registry packages satisfy specs that exist in the registry
- https://npm.community/t/400s-coming-back-from-registry-on-npm-audit/397
本記事執筆時点での最新バージョン(node@10.14.1(LTS) / npm@6.5.0)でも発生しているこの不具合は、npmコミュニティでもバグ報告されており、Kat Marchánさんも把握していると見られることから将来のアップデートによって解消することが予想されます。が、現時点では厄介な現象になっています。原因としてはnode_modules内の特定のパッケージがプライベート・フォークされたパッケージを参照していることが考えられるようです。
一時的な解決法
私の場合は以下のコマンドで再びnpm audit
が実行できるようになりました。
terminal
rm package-lock.json && npm i && npm audit fix
package.json
は残してpackage-lock.json
だけ消すのがポイント。
誰かの役に立てば幸いです。