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

Jest报错:moduleName.startsWith is not a function 问题排查

Jest测试通过但弹出TypeError: moduleName.startsWith is not a function警告

环境配置

  • 操作系统:macOS
  • Jest版本:
$ jest --version
29.4.2

操作背景

全局安装依赖:

npm install -g node-red
npm install -g node-red-node-test-helper

为调用Node-RED的node-red-node-test-helper工具进行测试,我封装了FlowTester类:

class FlowTester {
    constructor() {
        this.helper = require(Path.resolve(`${globalNodeModuleDir}/node-red-node-test-helper`));
    }

    init() {
        this.helper.init(require(Path.resolve(`${globalNodeModuleDir}/node-red`)));
    }

    defineDefaultFixtureForEach() {
        beforeEach((done) => {
            this.helper.startServer(done);
        });

        afterEach((done) => {
            this.helper.unload().then(() => {
                this.helper.stopServer(done);
            });
        });
    }
// 省略其他代码
}

注:因架构设计限制,node-red-node-test-helper无法作为本地依赖安装,只能全局安装,因此使用绝对路径引入。

在测试的自定义NodeJS节点包package.json中配置测试命令:

{
  // 省略其他配置内容
  "scripts": {
        "test": "jest"
  },
  // 省略其他配置内容
}

执行测试命令:

cd my_node
npm test

问题

所有Jest测试均能正常通过,但会弹出以下警告错误:

console.log
16:03:44      TypeError: moduleName.startsWith is not a function
16:03:44          at Resolver.isCoreModule (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:452:20)
16:03:44          at Resolver._getModuleType (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:576:17)
16:03:44          at Resolver.getModuleID (/usr/local/lib/node_modules/jest/node_modules/jest-resolve/build/resolver.js:529:29)
16:03:44          at Runtime._shouldMockCjs (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1815:37)
16:03:44          at Runtime.requireModuleOrMock (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1145:16)
16:03:44          at NodeTestHelper._initRuntime (/usr/local/lib/node_modules/node-red-node-test-helper/index.js:89:37)
16:03:44          at NodeTestHelper.init (/usr/local/lib/node_modules/node-red-node-test-helper/index.js:148:18)
16:03:44          at FlowTester.init (/Users/me/_util/node/_flowtest.js:18:15)
16:03:44          at Object.init (/Users/me/my_service/node/test/default/flow.test.js:16:9)
16:03:44          at Runtime._execModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1539:24)
16:03:44          at Runtime._loadModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:1122:12)
16:03:44          at Runtime.requireModule (/usr/local/lib/node_modules/jest/node_modules/jest-runtime/build/index.js:982:12)
16:03:44          at jestAdapter (/usr/local/lib/node_modules/jest/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)
16:03:44          at processTicksAndRejections (internal/process/task_queues.js:95:5)
16:03:44          at runTestInternal (/usr/local/lib/node_modules/jest/node_modules/jest-runner/build/runTest.js:367:16)
16:03:44          at runTest (/usr/local/lib/node_modules/jest/node_modules/jest-runner/build/runTest.js:444:34)
16:03:44  
16:03:44        at NodeTestHelper._initRuntime (../../../../../../../../usr/local/lib/n

分析

这是类型错误,但调用栈中出现“mock”关键字,我并未主动调用任何Mock API,这点存疑。

求助

我在Stack Overflow未找到相关解决方案,不清楚封装FlowTester类为何会引发该问题,是否是全局包的引入方式有误?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:15:33