🔖

vitest 導入済みプロジェクトに @testing-library/vue を追加する際に発生したエラー対応方法

2025/03/25に公開

新規プロジェクトで 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