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

使用Jest测试项目时出现TypeError: pathRegexp is not a function错误求助

解决Jest测试时express.json()报TypeError: pathRegexp is not a function的问题

这个错误的核心原因是Express依赖的path-to-regexp包出现版本冲突或安装异常,导致express.json()内部调用该函数时失败,和Jest测试逻辑本身无关。以下是针对性的解决步骤:

  • 锁定path-to-regexp兼容版本

    1. 先查看项目中该包的版本依赖树:npm list path-to-regexp
    2. Express 4.x版本要求path-to-regexp在0.1.x至0.2.x区间,直接在package.json中添加版本锁定:
      "resolutions": {
        "path-to-regexp": "0.2.1"
      }
      
    3. 重新安装依赖:npm install(yarn用户直接执行yarn install)
  • 彻底清理依赖并重装

    1. 删除本地依赖文件夹和锁文件:
      rm -rf node_modules package-lock.json yarn.lock
      
    2. 清除npm缓存:npm cache clean --force
    3. 重新安装所有依赖:npm install
  • 检查Jest配置是否干扰模块解析

    1. 打开jest.config.js,排查moduleNameMapper配置项,确保没有将path-to-regexp映射到错误模块
    2. 可以在测试文件开头添加验证代码,确认模块导出类型:
      const pathRegexp = require('path-to-regexp');
      console.log(typeof pathRegexp); // 正常应输出'function'
      
  • 确认Express导入方式正确性

    1. 检查app.js中的Express导入逻辑,CommonJS规范下应为:
      const express = require('express');
      const app = express();
      app.use(express.json());
      
    2. 如果项目启用了ES模块(package.json中type:module),需统一使用import语法:
      import express from 'express';
      const app = express();
      app.use(express.json());
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:10:05