まとめ参考[小ネタ]意図せずpackage-lock.jsonからプラットフォーム依存のパッケージが消えてCIが異常終了したので対応した話#npm#Node.js岩田智哉2024.10.08リテールアプリ共創部@大阪の岩田です。Actionsで実行しているCIジョブが異常終了するようになり、少しハマってしまったので情報共有のため経緯と対応方法をご紹介します。今回問題となった事象ですが以下のような流れで発生しました。installを行い再作成コンフリクトが解消できたのでリモートのfeatureブランチにプッシュCIが自動実行されエラーが発生!!発生したエラーは具体的には以下のようなエラーでした。checkを実行しているのですが、その際'@biomejs/cli-linux-x64/biomeが見つからずにエラーになっているようです。Macを利用しているので、CI環境とのアーキテクチャの差異が何かしら悪さをしてそうです。原因mainブランチとfeatureブランチの内容を比較したところ、package-lock.jsonに以下のような差分が見つかりました。},node_modules/@biomejs/biomeのoptionalDependenciesに含まれるnode_modules/@biomejs/cli-linux-x64の記述が丸々消えてしまっています。installするのがダメということは無いはずです。package-lock.jsonからx64環境向けのパッケージの記述が消えたんだ...と調べたところ、以下のissueを発見しました。installしてpackage-lock.jsonを再生成すると、node_modules配下に存在しないプラットフォーム依存のパッケージはpackage-lock.jsonに書き込まれないようです。Macなので、node_modules/@biomejs/配下はbiomeとcli-darwin-arm64のみ存在する状態です。installし直すとpackage-lock.jsonにはnode_modules/@biomejs/biomeとnode_modules/@biomejs/cli-darwin-arm64しか書き込まれないことになります。checkの実行に失敗していたようです。原因が分かったので後は簡単です。installし直しました。これで無事にpackage-lock.jsonにnode_modules/@biomejs/cli-linux-x64も書き出されました。プッシュしたところ、今度は正常にCIのジョブが完了しました。まとめ開発環境がAppleシリコン搭載のMacで、CI環境がx86環境というのはよくある環境だと思います。package.jsonやpackage-lock.jsonのコンフリクト解消後にプラットフォーム依存のパッケージがうまく見つからずにCIやCDのジョブが動かなくなった場合は、この記事を思い出してみてください。