You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:35:29