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

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那边安装的依赖版本和本地不一致。

解决方案

  1. 升级React到兼容版本
    Material-UI 4.x官方要求React 16.8.0及以上(因为依赖hooks),直接执行命令升级:

    # Windows环境也适用
    npm install react@^16.8.0 react-dom@^16.8.0
    
  2. 修正package.json的版本约束
    打开你的package.json,找到react和react-dom的依赖项,把版本从16.4.1改成^16.8.0(允许安装16.8.x以上的兼容版本),避免后续再次出现版本不兼容问题。

  3. 清理本地依赖并重新安装
    如果本地的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
    
  4. 同步lock文件到仓库
    把更新后的package-lock.json提交到代码仓库,确保Jenkins和本地安装的依赖版本完全一致,避免后续环境差异问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:50:52