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

部署Node.js+React应用至Heroku时出现Cannot find module 'cors'错误

解决Heroku部署Node.js+React应用时的cors模块缺失问题

问题原因

Heroku默认仅在项目根目录执行npm install,不会自动遍历子目录安装依赖。你的后端依赖(包括cors)都在server/package.json里,但Heroku没去这个目录安装,导致启动时找不到模块,触发H10崩溃错误。

解决方案

1. 调整根目录package.json的postinstall脚本

修改根目录的package.json,让Heroku在安装完根目录依赖后,自动安装server目录的依赖,同时保留React的build步骤:

{
  "scripts": {
    // 保留原有React相关脚本(如start、build等)
    "postinstall": "npm install --prefix server && npm run build"
  }
}
  • npm install --prefix server:指定在server目录执行依赖安装
  • npm run build:编译React前端生成build目录,用于后端静态文件托管(如果你的后端配置了托管前端的话)

2. 确保server目录的依赖配置正确

检查server/package.json,确认cors是放在dependencies而非devDependencies中:

{
  "dependencies": {
    "cors": "^2.8.5",
    // 其他后端依赖...
  }
}

Heroku默认会跳过devDependencies的安装,所以必须把生产环境需要的依赖放在dependencies里。

3. 修正Procfile(可选)

如果之前的Procfile是web: node server/index.js,现在可以直接保留——因为server目录的依赖已经通过postinstall安装完成,从根目录启动后端即可。

4. 本地验证与部署前准备

  • 本地测试:删除根目录和server目录的node_modules,执行npm install,确认所有依赖安装完成后,启动项目测试是否正常运行。
  • Git提交:确保server/package.json、server/package-lock.json以及修改后的根目录package.json都已提交到Git仓库,不要把这些文件加入.gitignore。

部署验证

重新推送到Heroku,查看日志确认状态:

heroku logs --tail

如果没有Cannot find module 'cors'的错误,且应用启动成功,就说明问题解决了。

内容的提问来源于stack exchange,提问作者test-app

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:00:36