🔖
vitest 導入済みプロジェクトに @testing-library/vue を追加する際に発生したエラー対応方法
新規プロジェクトで Testing Library を使いたいと思い、導入を試みた際にエラー対応が必要だったので、対処法をメモしておく。
Testing Library を導入する為にやったこと
対象プロジェクトでは Vue3 を使用している為、以下コマンドで npm install しただけ。
npm install --save-dev @testing-library/vue
ref:https://testing-library.com/docs/vue-testing-library/intro
環境
- Ubuntu 22.04.4(GitHub Actions 環境)
- Node.js v22.14.0
- Vite v6.2.1
- vitest v3.0.8
起きた事象
ローカル環境でのテストや lint は問題なかったのだが、GitHub Actionsで vitest を叩くところで次のエラーが発生。
⎯⎯⎯⎯⎯⎯⎯ Startup Error ⎯⎯⎯⎯⎯⎯⎯⎯
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/portfolio/portfolio/node_modules/rollup/dist/native.js:64:9)
at Object.<anonymous> (/home/runner/work/portfolio/portfolio/node_modules/rollup/dist/native.js:73:76)
at Module._compile (node:internal/modules/cjs/loader:1554:14)
at Object..js (node:internal/modules/cjs/loader:1706:10)
at Module.load (node:internal/modules/cjs/loader:1289:32)
at Function._load (node:internal/modules/cjs/loader:1108:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:220:24)
at cjsLoader (node:internal/modules/esm/translators:262:5)
at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:196:7) {
[cause]: Error: Cannot find module '@rollup/rollup-linux-x64-gnu'
Require stack:
- /home/runner/work/portfolio/portfolio/node_modules/rollup/dist/native.js
at Function._resolveFilename (node:internal/modules/cjs/loader:1225:15)
at Function._load (node:internal/modules/cjs/loader:1055:27)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:220:24)
at Module.require (node:internal/modules/cjs/loader:1311:12)
at require (node:internal/modules/helpers:136:16)
at requireWithFriendlyError (/home/runner/work/portfolio/portfolio/node_modules/rollup/dist/native.js:46:10)
at Object.<anonymous> (/home/runner/work/portfolio/portfolio/node_modules/rollup/dist/native.js:73:76)
at Module._compile (node:internal/modules/cjs/loader:1554:14)
at Object..js (node:internal/modules/cjs/loader:1706:10) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/home/runner/work/portfolio/portfolio/node_modules/rollup/dist/native.js'
]
}
}
Error: Process completed with exit code 1.
原因と対応
結論、Vite で Rollup する時 @rollup/wasm-node
を使用するように package.json で overrides を指定すれば良さそう。以下追記し、npm i し直して、push したら直った。
package.json
"overrides": {
"vite": {
"rollup": "npm:@rollup/wasm-node"
}
}
Discussion