React 16.4.1与Material-UI 4.1.1兼容性问题:本地运行报错求助
解决TypeError: _react.default.memo is not a function的问题
首先,核心原因很明确:你使用的React 16.4.1版本不支持React.memo API——这个性能优化API是在React 16.6.0版本才正式引入的。而Material-UI 4.1.1的createSvgIcon工具内部用到了这个API,所以当React版本低于16.6.0时,就会抛出这个错误。
为什么本地和Jenkins环境表现不同?
这种差异大概率是两边安装的React实际版本不一致导致的:
- 可能你的
package.json中React版本写的是宽松约束(比如^16.4.1),Jenkins环境的npm(6.9.1)在解析依赖时自动安装了16.6.0以上的兼容版本;而本地npm(6.9.0)因为package-lock.json锁定了16.4.1版本,所以没有升级。 - 也可能是本地存在旧的依赖缓存,或者
package-lock.json没有同步到代码仓库,导致Jenkins那边安装的依赖版本和本地不一致。
解决方案
升级React到兼容版本
Material-UI 4.x官方要求React 16.8.0及以上(因为依赖hooks),直接执行命令升级:# Windows环境也适用 npm install react@^16.8.0 react-dom@^16.8.0修正package.json的版本约束
打开你的package.json,找到react和react-dom的依赖项,把版本从16.4.1改成^16.8.0(允许安装16.8.x以上的兼容版本),避免后续再次出现版本不兼容问题。清理本地依赖并重新安装
如果本地的package-lock.json锁定了旧版本,先删除它和node_modules,再重新安装依赖:# Windows系统 rmdir /s /q node_modules del package-lock.json npm install # Linux/macOS系统 rm -rf node_modules package-lock.json npm install同步lock文件到仓库
把更新后的package-lock.json提交到代码仓库,确保Jenkins和本地安装的依赖版本完全一致,避免后续环境差异问题。
内容的提问来源于stack exchange,提问作者Sateesh K
相关产品推荐
相关产品推荐

