npm7にバージョンアップした後にserverless frameworkでエラーが出るようになった

メモです。

概要

npmのバージョンを7にしました。

そのあとに以前から使っていたプロジェクトでserverless deployをしたところ以下のようなエラーが出ました

npm.cmd ls -prod -json -depth=1 failed with code 1

環境

  • Operating System: win32
  • Node Version: 14.17.0
  • Framework Version: 2.55.0 (local)
  • npm 7.20.6

エラー詳細と調査

Error: npm.cmd ls -prod -json -depth=1 failed with code 1
      at ChildProcess.<anonymous> (C:\workspace\xxxx\node_modules\serverless-webpack\lib\utils.js:91:16)
      at ChildProcess.emit (events.js:376:20)
      at ChildProcess.emit (domain.js:470:12)
      at maybeClose (internal/child_process.js:1055:16)
      at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
  • エラーの文字文字列を調べてもなかなかわからず、node_modulesを削除してみたり、yarn.lockを削除したりしました。が全然解消しませんでした。
  • serverless offlineは起動するのとエラーの発生した部分がwebpackだったのでその周辺を調査すると原因がわかりました。

解決

  • 以下のリンクと同じ原因でした。なので、serverless webpackのバージョンを上げるか、serverless-webpackのpackeagerをyarnに変更してあげればOK github.com

  • serverless-webpackのプラグインは一部のエラーは無視するように作られているようです。

  • npm7でエラーの出力形式が変わったために、従来は無視できていたエラーが引っかかるようになってしまったために発生するエラーのようです。

最後に

  • うまく検索できれば一発で解決できたのに。。勘所が鈍っている気がします。