Next.js中Jest测试部分失败:SIGABRT终止Jest Worker进程
Next.js + Jest本地测试崩溃(线程Panic/SIGABRT)解决方案
从报错信息来看,问题核心是本地出现了._开头的隐藏测试文件(比如._formatLongDate.test.js),这类文件是Mac系统生成的临时文件,会触发Jest底层线程崩溃;同时你之前的文件排除规则有误,导致正常测试用例也被过滤。以下是具体解决步骤:
1. 正确排除无效测试文件
修改jest.config.js,新增testPathIgnorePatterns配置,精准忽略系统生成的._开头文件,同时保留正常测试用例:
const nextJest = require("next/jest"); const createJestConfig = nextJest({ dir: "./", }); /** @type {import('jest').Config} */ const config = { setupFilesAfterEnv: ["<rootDir>/jest.setup.js"], testEnvironment: "jest-environment-jsdom", moduleNameMapper: { "^@/components/(.*)$": "<rootDir>/src/components/$1", "^@/lib/(.*)$": "<rootDir>/src/lib/$1", "^@/pages/(.*)$": "<rootDir>/src/pages/$1", }, transformIgnorePatterns: [ "/node_modules/(?!(.*\\.jsx?)|(.*\\.css?))", ], // 新增:忽略._开头的隐藏文件和node_modules testPathIgnorePatterns: [ "/node_modules/", "/\\._.*/" ], }; module.exports = createJestConfig(config);
2. 清空Jest缓存
本地缓存可能残留了无效文件的索引,执行命令清空:
npx jest --clearCache
3. 重新运行测试
执行原测试命令即可:
npm run test
额外排查步骤(若以上无效)
- 统一Node.js版本:确保本地Node.js版本和其他正常运行环境一致,可通过
nvm切换版本 - 重装依赖:删除损坏的本地依赖后重新安装:
rm -rf node_modules package-lock.json npm install - 禁用多线程:临时添加
--runInBand参数强制Jest单线程运行,排查是否为多线程资源冲突:// package.json "scripts": { "test": "jest --runInBand --watchAll --verbose --coverage" }
内容的提问来源于stack exchange,提问作者Salvatore Stampone
相关产品推荐
相关产品推荐

