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

Heroku部署Node应用:配置start脚本后仍报启动异常错误

核心问题定位

对照给出的运行日志和package.json配置,能直接定位两处不匹配的问题:

  • 你的部署目标是Node后端应用,但配置的启动脚本是前端本地开发命令:react-scripts start是Create React App框架自带的前端热更新启动指令,根本不是后端服务的运行入口,和部署目标完全错位。
  • 日志报sh: 1: react-scripts: not found,说明运行环境里根本没有安装这个命令对应的包:要么是react-scripts没被加入项目依赖列表,要么是它被放在devDependencies分组里,Heroku生产构建默认跳过开发依赖的安装流程,自然找不到可执行的命令。
    额外提醒:哪怕你把react-scripts依赖装全了,这个启动命令也没法在Heroku上正常跑通——它默认硬编码监听本地3000端口,不会对接Heroku分配的动态端口,就算进程启动成功也会被平台判定为异常进程。
分步解决操作
  • 第一,修正启动脚本的实际指向
    把package.json里scripts.start的内容,改成你本地启动Node后端的实际命令:比如你的后端入口文件是根目录下的app.js,就把脚本改成"start": "node app.js",和本地跑服务的命令保持一致即可。
  • 第二,适配同仓库的前端构建场景
    如果你的项目是前后端同仓库的全栈结构,除了后端启动命令之外,还要做两个调整:
    1. 如果你需要用到react-scripts做前端打包,就把react-scripts从devDependencies移到dependencies分组下,或者通过Heroku配置打开开发依赖安装开关:执行heroku config:set NPM_CONFIG_PRODUCTION=false,避免构建阶段跳过这个包的安装
    2. 给前端加专门的构建脚本,不要直接用react-scripts start当生产启动命令——生产环境要先执行react-scripts build把前端代码打包成静态文件,再由后端服务托管这些静态文件,启动入口始终指回后端服务即可。
  • 第三,适配Heroku的端口规则
    检查后端的端口监听代码,必须读取环境变量process.env.PORT的值,不能硬编码写死固定端口(比如3000、8080),否则平台分配的端口和服务监听的端口对不上,进程就算启动成功也会被判定崩溃。
  • 第四,重新触发有效部署
    所有配置修改完成后,记得把变更提交到本地Git仓库,再推送到Heroku对应的远程分支,不能只在本地改完配置就直接点平台的重启按钮——重启拉取的还是你之前提交的旧代码,改的配置根本不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 00:36:03