react打包发到线上报错Minified React error #130

开发过程中遇到一个问题,记录一下

本地打包发布正常,发测试环境正常,可是通过Jenkins打包发布线上报错

报错信息

index-67fbbd81.js:39 Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130\&args\[\]=undefined\&args\[\]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.

打开报错信息发现报错

由于这次更新内容比较多,开始怀疑是不是本地代码问题,

组件undefined一般是引入导出组件名问题。让cursor检查了一遍代码,发现代码没有问题。

又从git上重新拉取代码,下载依赖,运行,也是没问题。

本地生产环境没问题,线上报错,说明问题很可能出在环境差异上。

对比了一下Jenkins上的node版本,react版本等,发现版本号一致。

猜想可能是使用本地包的问题,在服务器上单独下载了依赖,导致线上本地依赖包不一致。

原本的Jenkins打包命令

复制代码
yarn install
yarn build

yarn install 不是严格模式,可能会根据 semver 自动升级依赖,导致和本地 node_modules 不一致。

如果 Jenkins 的 node_modules 目录有残留,可能会混入旧依赖,导致打包产物和本地不一样。

更改后的Jenkins命令

复制代码
rm -rf node_modules
yarn cache clean
yarn install --frozen-lockfile
yarn build

rm -rf node_modules:彻底清理依赖,避免残留

yarn cache clean:清理 yarn 缓存

yarn install --frozen-lockfile:严格按照 yarn.lock 安装依赖,保证和本地一模一样

yarn build:正常打包

这样可以100% 保证 Jenkins 构建出来的依赖和本地完全一致,不会因为依赖包差异导致线上 undefined 或 React #130 错误。

很多线上"本地没问题,线上报错"的根因,都是因为 CI/CD 没有严格依赖锁定

接下来重新用用Jenkins打包----正常-----线上-----正常!

完美解决!

相关推荐
卸任7 小时前
Vibe coding工具使用心得
前端·ai编程
brien97 小时前
为什么模型标称 1M,Google Antigravity 聊到 256K 却突然失忆?我们给它做了个原生行内监控圆环
前端
修炼的dance8 小时前
录屏关键帧间隔多少合适?六档实测,2秒到10秒小了75.6%
前端
Lank_M8 小时前
关键帧从1秒拉到10秒,录屏小87.3%,摄像头小10.8%
前端
补码缩写8 小时前
用 ffprobe 拆录屏,八成字节在 29 个关键帧上
前端
百思不得小李8 小时前
一个复杂的动态表单是如何实现的
前端·设计模式
陈随易8 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
风骏时光牛马8 小时前
前沿视界
前端
kyriewen8 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易8 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员