使用Vitest运行Vue单元测试时出现Segmentation Fault问题
Windows 10 Git Bash下Vitest测试通过后触发Segmentation Fault并丢失终端提示符
环境信息
- 操作系统:Windows 10
- 终端:Git Bash
- Node.js版本:v18.18.0
- npm版本:9.8.1
- 项目框架:Vue.js 3.3.4
- 测试框架:Vitest
项目package.json的scripts配置:
"scripts": { "serve": "vite", "test:unit": "vitest", "coverage": "vitest run --coverage", },
问题现象
执行npm run test:unit后,所有测试用例均通过,但运行结束时出现Segmentation Fault错误,终端提示符丢失,需重启Git Bash才能恢复:
✓ src/views/__tests__/SockView.spec.js (3) ✓ StockView.vue (3) ✓ renders a title ✓ does not render the Bar chart when not loaded ✓ renders the Bar chart when loaded /c/Program Files/nodejs/npm: line 64: 321 Segmentation fault "$NODE_EXE" "$NPM_CLI_JS" "$@"
解决方法
更换终端执行测试
改用Windows自带的CMD或PowerShell运行npm run test:unit,这类终端与Node.js进程的兼容性更好,可直接规避该问题。修改Vitest为非监听模式
更新package.json的test:unit脚本,添加run参数让测试一次性执行完毕,避免监听模式下的进程退出异常:"scripts": { "serve": "vite", "test:unit": "vitest run", "coverage": "vitest run --coverage", }升级Node.js版本
Node.js 18.18.0存在Windows环境下的进程退出bug,升级至18.x最新稳定版(如v18.20.x)或20.x LTS版本,可修复底层兼容性问题。调整Git Bash环境变量
在Git Bash中执行以下命令后再运行测试,减少终端与Node进程的冲突:export MSYS_NO_PATHCONV=1 export TERM=dumb npm run test:unit
内容的提问来源于stack exchange,提问作者Péter Szilvási
相关产品推荐
相关产品推荐

