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を上げたわけでもないのに何の変更が原因でこれが急に生じたのわからない
Error: Cannot find module @rollup/rollup-linux-x64-gnu on Docker container · vitejs vite · Discussion #15532 · GitHub
エラーメッセージに貼られていたURL
BUG Platform-specific optional dependencies not being included in package-lock.json when reinstalling with node_modules present · Issue #4828 · npm/cli · GitHub
対策
ひとまず、package.jsonのoptionalDependenciesで指摘されているpackageを指定した
code:package.json
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "4.14.3"
}
Viteのビルド時に発生した「Cannot find module @rollup/rollup-linux-x64-gnu.」の対処方法 - ひよこまめ
Viteのプロダクションビルドでは、Rollupを使ってビルドが行なわれている。
このRollupでのビルドには、rollupパッケージの代わりに、事前にコンパイルされたバイナリファイルが使用される。
そのためビルドする際には、ビルド環境に合わせてコンパイルされたバイナリファイルが必要となる。
そうなんだ。npm ci環境をで固定できないの普通に使い勝手悪くないかmrsekut.icon
実行する場所ごとにこういう設定が必要ということになる
package-lock.jsonが環境の再現性を担保できていない
Error: Cannot find module @rollup/rollup-linux-x64-gnu#66234ac71982700000c12e8dで指摘されている
この記事ではviteを直接使用しているため、package.jsonのoptionalDependenciesではなくpackage.jsonのoverridesで解決している
これが生じたタイミングがわからないから、度のタイミングでoptionalDependenciesを外してもいいのかわからない..