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

使用create-jest-runner创建Jest自定义运行器时遇未定义属性读取错误

使用create-jest-runner自定义Jest运行器时触发TypeError错误

错误堆栈

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at new Worker (/Users/redacted/git/redacted/redacted/redacted/node_modules/create-jest-runner/node_modules/jest-worker/build/index.js:120:20)
    at BaseTestRunner._createParallelTestRun (/Users/redacted/git/redacted/redacted/redacted/node_modules/create-jest-runner/build/createJestRunner.js:63:22)
    at BaseTestRunner.runTests (/Users/redacted/git/redacted/redacted/redacted/node_modules/create-jest-runner/build/createJestRunner.js:40:119)
    at TestScheduler.scheduleTests (/Users/redacted/git/redacted/redacted/redacted/node_modules/@jest/core/build/TestScheduler.js:331:30)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async runJest (/Users/redacted/git/redacted/redacted/redacted/node_modules/@jest/core/build/runJest.js:376:19)
    at async _run10000 (/Users/redacted/git/redacted/redacted/redacted/node_modules/@jest/core/build/cli/index.js:416:7)
    at async runCLI (/Users/redacted/git/redacted/redacted/redacted/node_modules/@jest/core/build/cli/index.js:271:3)
    at async Object.run (/Users/redacted/git/redacted/redacted/redacted/node_modules/jest-cli/build/cli/index.js:163:37)

错误在自定义runner逻辑执行前就触发,排查不到相关修复文档,应该是遗漏了配置或版本不兼容。

环境依赖

  • jest: ^26.6.3
  • create-jest-runner: ^0.12.3

相关代码

custom-runner.js

const { createJestRunner } = require("create-jest-runner");

const runner = async ({ testPath }) => {
    // Do Something
};

module.exports = createJestRunner(runner);

jest.config.js

module.exports = {
    ...regularSettings,
    runner: "./custom-runner.js",
};

解决方案

这个问题的核心是版本不兼容:create-jest-runner@0.12.x是为Jest 28+版本设计的,和你当前使用的Jest 26.x在jest-worker的调用逻辑上存在冲突,导致初始化Worker时抛出未定义属性的错误。

你可以选择以下两种修复方式:

  1. 降级create-jest-runner到适配版本
    安装支持Jest 26.x的create-jest-runner@0.10.x系列:

    npm install create-jest-runner@^0.10.0 --save-dev
    

    该版本会自动匹配Jest 26.x的依赖结构,避免Worker初始化错误。

  2. 升级Jest到兼容版本
    将Jest升级到28.x或更高版本,确保和create-jest-runner@0.12.x的版本匹配:

    npm install jest@^28.0.0 --save-dev
    

    注意:升级后需要检查原有Jest配置和测试用例,部分API在Jest 28中有变更(比如testEnvironment默认值改为node)。

如果暂时无法调整版本,也可以尝试在自定义runner中显式指定Worker路径,但版本匹配是最彻底的解决办法。


内容的提问来源于stack exchange,提问作者Jkaram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:36:11