💥

Node.jsのバージョンをv18にしたらnode-gypのinstallがコケた

2023/06/12に公開

起きたこと

  • CIのNode.jsのバージョンをv16 → v18に上げたらnpm iで依存に含まれていたnode-gypのbuildがコケるエラーが発生した
    • エラーの内容はPythonのパスが見つからない、という内容
  • 更新差分はNode.jsのバージョンだけ

原因

  • node-gypのinsatll時、まずはnode-pre-gypが実行され、実行環境のNode.jsのバージョンとinstallするnode-gypのバージョンに適合するbinaryをAmazon S3からダウンロードできないか試行する
  • これができなかった場合、buildする
    • v16ではbinaryを落とせたため、buildする必要がなかったためコケなかった
    • v18にしたことでbuildする必要が出てきた → buildに必要な依存がなかったためCIがコケた

解決策

node-gypのbuildに必要、かつ環境で足りていない依存を入れてあげる
公式ドキュメント通りにやればいい

https://github.com/nodejs/node-gyp#on-unix

ひとこと

node-gypは癖がある、くらいの浅い認識だったがnode-pre-gypを初めて意識した
なるほどなー

Discussion