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

升级MUI至v5.14.18后出现TS1005类型错误求助

解决MUI v5.14.18升级后TypeScript编译错误

问题详情

将项目从MUI v5.8.1升级至v5.14.18后,执行tsc命令时出现如下TypeError:

../../node_modules/@mui/material/ClickAwayListener/index.d.ts:1:45 - error TS1005: ',' expected.

export { ClickAwayListener as default, type ClickAwayListenerProps, } from '@mui/base/ClickAwayListener';
~~~~~~~~~~~~~~~~~~~~~~

Found 1 error.

当前环境版本:

  • TypeScript: 4.3.5
  • Node: 18.17.1
  • @mui/material: 5.14.18

已在tsconfig.json中设置skipLibCheck: true并排除node_modules,但错误依然存在;手动移除类型导出语句中的type关键字可消除错误。

解决方案

1. 升级TypeScript版本

错误根源是TypeScript 4.3.5不支持type关键字在导出解构中的语法,该特性从TypeScript 4.5版本开始引入。直接将TypeScript升级到4.5.x及以上稳定版本(推荐升级到匹配MUI v5.14.x的TS版本,比如4.9+),即可兼容该语法,无需修改第三方库代码。

2. 临时补丁方案(不升级TS时)

如果暂时无法升级TypeScript,可使用patch-package给@mui/material打本地补丁:

  • 安装patch-package:npm install patch-package --save-dev
  • 打开node_modules/@mui/material/ClickAwayListener/index.d.ts,将代码修改为:
    export { ClickAwayListener as default, ClickAwayListenerProps, } from '@mui/base/ClickAwayListener';
    
  • 执行npx patch-package @mui/material生成补丁文件
  • 后续执行npm install时,补丁会自动应用到依赖包中

关于skipLibCheck未生效的说明

skipLibCheck: true仅跳过对.d.ts文件的类型检查,但如果第三方库的.d.ts文件存在语法错误(而非类型不兼容),TS编译器依然会报错,因为语法错误会阻断编译流程。这也是即使设置了该选项仍出现错误的原因。

内容的提问来源于stack exchange,提问作者Eric Barbour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:15