Heroku部署因MUI包TypeScript错误失败,求解决方案
解决Heroku部署时MUI Popper组件的TypeScript类型错误问题
方案一:修复nonce类型不匹配错误
- 定位使用Popper组件的代码,确认
nonce属性传入值的类型。MUI Popper要求该属性为string | undefined,避免传入number、null等不符合要求的类型。 - 若为MUI内部类型定义冲突,可通过类型断言临时兼容:
<Popper nonce={yourNonceValue as string} {...otherProps} /> - 更新MUI相关依赖到最新稳定版,旧版本可能存在类型定义缺陷:
npm update @mui/material @mui/system @emotion/react @emotion/styled
方案二:部署时跳过TypeScript检查(保留本地开发检查)
要保留本地TS校验能力,需单独配置部署构建脚本:
- 在
package.json的scripts中新增部署专用构建命令:"scripts": { "build": "tsc && react-scripts build", // 本地开发/校验用 "build:deploy": "react-scripts build", // 部署时跳过tsc检查 ... } - 配置Heroku使用新的构建命令:
- 项目根目录创建
Procfile文件,写入:web: npm run build:deploy && serve -s build - 或修改
package.json的heroku-postbuild脚本:"scripts": { ... "heroku-postbuild": "npm run build:deploy" }
- 项目根目录创建
- 若项目使用
craco等自定义构建工具,需对应调整构建命令,移除其中的TS类型校验步骤。
额外提示:若修改tsconfig.json的strict: false无效,检查是否存在tsconfig.prod.json等生产环境专属配置文件,需同步调整对应配置。
内容的提问来源于stack exchange,提问作者Manfred
相关产品推荐
相关产品推荐

