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
相关产品推荐
相关产品推荐

