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

Heroku部署Node+Webpack项目遇模块找不到及Git大小写问题

解决方案:修复Git大小写问题、Heroku构建脚本与React组件错误

看起来你遇到了几个叠加的问题:Git大小写不敏感导致的文件名同步问题、Heroku构建脚本卡住,还有React Redux connect的用法错误,我来一步步帮你解决:

1. 先解决Heroku构建无法完成的问题

你的postinstall脚本用了build-client-watch——这是webpack的监听模式,它会一直运行不退出,而Heroku要求构建脚本必须在完成后终止,否则会判定构建失败。

修改package.json里的脚本配置:

"scripts": {
  "start": "NODE_ENV='production' node server", // 生产环境不要用nodemon,直接用node启动服务
  "build-client": "webpack", // 新增非监听的生产构建命令
  "build-client-watch": "webpack -w",
  "start-server": "nodemon server -e html,js,scss --ignore public --ignore client",
  "postinstall": "NODE_ENV='production' npm run build-client" // 替换为非监听的构建命令
}

这样Heroku在执行postinstall时,webpack会完成打包后自动退出,让部署流程正常推进。

2. 修复Navbar组件的Redux connect用法

你的Navbar.js里的connect写法有误,这会导致组件即使被找到也无法正常渲染:

import React from 'react'
import {connect} from 'react-redux'

const Navbar = () => (
  <nav id="navbar">
    <p>MY FULL NAME</p>
  </nav>
)

// 正确写法:先调用connect()(可传入mapStateToProps等参数,这里不需要则空调用),再传入组件
export default connect()(Navbar)

原来的connect(Navbar)是错误用法,不符合Redux connect的调用规范。

3. 彻底解决Git大小写敏感的遗留问题

虽然你本地设置了core.ignorecase false,但Git缓存和远程仓库里的文件名可能还是旧的小写navbar.js,Heroku拉取代码时拿到的还是旧文件名,所以找不到./Navbar。

用Git命令正确重命名文件(避免手动改名的缓存遗漏):

# 强制Git识别文件名的大小写变化
git mv navbar.js Navbar.js
# 提交改名操作
git commit -m "fix: properly rename navbar.js to Navbar.js with case sensitivity"
# 推送到远程仓库
git push

这样远程仓库就会同步正确的大写文件名,Heroku拉取代码时就能找到Navbar.js了。

另外,确保当前仓库的Git大小写敏感设置生效:

git config core.ignorecase false

4. 重新部署验证

完成以上修改后,重新推送到Heroku:

git push heroku main

查看Heroku的构建日志,确认没有Module not found的错误,构建完成后访问应用,应该就能正常加载Navbar组件了。


内容的提问来源于stack exchange,提问作者Claire Gilligan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:24:43