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

Node.js 18升级后执行npm run test出现TypeError问题求助

问题分析与解决方案

问题根源

你遇到的TypeError: Cannot destructure property 'config' of 'cacheKeyOptions' as it is undefined错误,核心原因是babel-jest版本与Jest版本不兼容——你用了Jest 29.7.0,但babel-jest停留在26.6.3,两个大版本差异导致API不匹配。另外@babel/preset-stage-2已经被官方废弃,继续使用也可能引发兼容性问题。

解决步骤

  • 统一babel-jest与Jest版本
    将babel-jest升级到与Jest一致的29.7.0版本,修改package.json中的依赖:

    "babel-jest": "29.7.0",
    
  • 移除废弃的@babel/preset-stage-2
    stage系列预设早已废弃,官方建议直接使用@babel/preset-env并配置需要的语法特性,或者单独引入对应的提案插件。先从package.json中删除该依赖:

    // 删除这一行
    "@babel/preset-stage-2": "7.0.0",
    
  • 更新Babel配置
    修改你的Babel配置文件(如babel.config.js或.babelrc),移除stage-2预设,同时给@babel/preset-env添加适配Node.js 18的配置:

    presets: [
      '@babel/react',
      [
        '@babel/preset-env',
        {
          targets: {
            node: '18' // 适配你当前的Node.js版本
          }
        }
      ]
    ],
    
  • 清理依赖并重新安装
    删除现有依赖缓存和锁文件,确保依赖完全更新:

    rm -rf node_modules package-lock.json
    npm install
    
  • 重新运行测试
    执行测试命令验证问题是否解决:

    npm run test
    

补充说明

如果仍有语法特性需要支持(原stage-2包含的特性),可以单独引入对应的Babel插件,例如:

// package.json中添加
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-object-rest-spread": "^7.20.7"

然后在Babel配置的plugins数组中添加这些插件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:13:34