React应用本地运行正常,本地及AWS服务端构建报错如何解决?
问题解决步骤
1. 优先排查大小写不匹配问题
- Windows、macOS默认文件系统大小写不敏感,而AWS构建使用的Linux环境大小写完全敏感,这是开发模式正常但生产构建报错最常见的诱因
- 核对所有涉及移动/重命名文件的文件名大小写、导入路径字符串的大小写,确保和实际文件完全一致,比如
ExportTableAccountStores.js不能写成exporttableaccountstores.js或者exportTableAccountStores.js - 检查Git大小写配置:执行
git config core.ignorecase,如果返回true说明Git默认忽略文件名大小写变化,你本地改了大小写的文件不会被提交到仓库,AWS拉取的还是旧文件名的文件,自然找不到资源。修改配置执行git config core.ignorecase false,之后重新提交改名后的文件即可。
2. 清理项目本地构建缓存
你执行的npm cache verify清理的是npm全局依赖包缓存,和React项目的构建缓存无关,正确清理方式:
- 删除项目根目录下的
node_modules/.cache文件夹(react-scripts的编译缓存存在这里) - 删除已生成的
build文件夹 - 可选:删除
package-lock.json/yarn.lock后重新执行npm install/yarn install安装依赖 - 之后再执行
npm run build测试是否能正常编译
3. 核对导入路径与导出声明
- 再次确认
InventoryVarianceAccountStores.js中导入ExportTableAccountStores的相对路径是否正确,注意移动文件后相对路径的层级会发生变化,同时确认导入时是否遗漏了文件后缀,部分生产构建配置不会自动补全非标准后缀的文件路径 - 全局搜索项目中是否还有残留的旧变量名
ExportTableClassificationStores:开发模式是增量编译,未被触发编译的文件中的旧引用不会抛出错误,但生产构建是全量编译,会扫描所有代码中的未定义变量 - 确认导出语句匹配:检查
ExportTableAccountStores文件的导出语句是默认导出还是命名导出,导入语法要和导出语法对应
4. 强制全量编译测试
如果上述操作后本地build正常但AWS仍报错,检查AWS构建配置是否开启了缓存,清空AWS构建历史缓存后重新触发构建即可。
内容的提问来源于stack exchange,提问作者jove0610
相关产品推荐
相关产品推荐

