Parcel构建的无后端React应用在Heroku部署时构建失败求解决
解决方案
核心报错为无法解析A01SignUp.js依赖,lscpu相关日志仅为警告不影响构建,可按以下步骤排查修复:
- 第一步:校验文件路径与大小写匹配
Heroku使用的Linux文件系统大小写完全敏感,而Windows/macOS默认大小写不敏感,会出现本地运行正常、线上构建失败的情况:- 检查
/src/pages/a00auth/目录下的实际文件名,必须和App.js中import语句的写法完全一致,包括大小写、后缀名 - 确认你导入的
A01SignUp.js实际后缀是否为.js,如果是.jsx后缀要么修改import语句补全正确后缀,要么去掉后缀让Parcel自动识别 - 如果修改了文件名大小写,执行
git config core.ignorecase false关闭git大小写忽略,重新提交代码,避免git未识别文件名变更
- 检查
- 第二步:修复Parcel版本冲突
你的依赖中同时存在Parcel 1(parcel-bundler@1.12.5)和Parcel 2专属的@parcel/transformer-webmanifest依赖,两个大版本完全不兼容:- 若要使用Parcel 1:卸载所有
@parcel/开头的Parcel 2相关依赖,重新安装依赖后测试构建 - 若要使用Parcel 2:卸载
parcel-bundler,安装正式版的parcel@2.x,不要使用beta版本,避免稳定性问题
- 若要使用Parcel 1:卸载所有
- 第三步:补全Heroku构建配置
在package.json中显式指定Node版本和构建脚本,避免Heroku默认配置兼容问题:"scripts": { "start": "parcel ./src/index.html", "build": "parcel build ./src/index.html", "heroku-postbuild": "npm run build", "postbuild": "workbox generateSW", "predeploy": "rm -rf dist && npm run build", "deploy": "gh-pages -d dist" }, "engines": { "node": "16.x", "npm": "8.x" }
所有修改完成后,先本地执行rm -rf dist && npm run build确认本地构建无报错,再推送到Heroku重新部署即可。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

