Error: Cannot find module @rollup/rollup-linux-x64-gnu
GitHub Actionでのvitestの実行時に以下のエラーが起きた
code:_
myapp@1.0.0 test
vitest
Error: Cannot find module @rollup/rollup-linux-x64-gnu. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try npm i again after removing both package-lock.json and node_modules directory. at requireWithFriendlyError (/home/runner/work/myapp/myapp/node_modules/vite/node_modules/rollup/dist/native.js:87:9)
at Module._load (node:internal/modules/cjs/loader:1019:12)
at async main (file:///home/runner/work/myapp/myapp/node_modules/vitest/dist/cli-wrapper.js:45:5) {
cause: Error: Cannot find module '@rollup/rollup-linux-x64-gnu' Require stack:
- /home/runner/work/myapp/myapp/node_modules/vite/node_modules/rollup/dist/native.js
}
ローカルでvitestを実行してもエラーは起きない
割と発生したタイミングが謎だった
このリポジトリではviteには直接依存しておらずvitest経由で依存している
viteと関係のないpackageをupgradeしたPRを投げたときに起きた気がする
ちょっと雑にやってたので厳密なタイミングがわからない
vitestを上げたわけでもないのに何の変更が原因でこれが急に生じたのわからない
エラーメッセージに貼られていたURL
対策
code:package.json
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.14.3"
}
Viteのプロダクションビルドでは、Rollupを使ってビルドが行なわれている。 このRollupでのビルドには、rollupパッケージの代わりに、事前にコンパイルされたバイナリファイルが使用される。
そのためビルドする際には、ビルド環境に合わせてコンパイルされたバイナリファイルが必要となる。
そうなんだ。npm ci環境をで固定できないの普通に使い勝手悪くないかmrsekut.icon
実行する場所ごとにこういう設定が必要ということになる
package-lock.jsonが環境の再現性を担保できていない
これが生じたタイミングがわからないから、度のタイミングでoptionalDependenciesを外してもいいのかわからない..