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

部署Express应用时遭遇Error R10(启动超时)问题求助

解决Heroku部署ES6 Express应用出现Error R10(启动超时)的问题

我仔细看了你的问题描述和日志,核心问题其实很明确:你的ES6源码里缺少启动服务器监听端口的代码,导致编译后的build/app.js只是导出了Express的app实例,并没有实际启动服务。这也是为什么你手动给build/app.js补上app.listen()后就能正常运行的原因。

下面是具体的解决方案:

1. 在ES6源码中添加监听代码

找到你的src/app.js(原始的ES6文件),在文件末尾添加以下代码:

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

这样当Babel编译源码时,这段监听逻辑会被包含到build/app.js中,之后不管是本地运行npm start还是Heroku部署启动,服务器都会自动绑定指定端口。

2. 验证编译结果

执行npm run build后,检查build/app.js,应该能看到类似下面的编译后代码:

const PORT = process.env.PORT || 5000;
app.listen(PORT, function () {
  console.log(`Server is running on port ${PORT}`);
});

3. 为什么会出现R10错误?

Heroku的Error R10触发逻辑是:Web进程在60秒内没有绑定到$PORT环境变量指定的端口。你的日志显示应用已经成功连接数据库,但因为没有启动监听端口的逻辑,Heroku无法检测到服务已启动,最终超时终止了进程。

额外提示

  • 不要手动修改build/目录下的文件,因为每次执行npm run build都会清空并重新生成这个目录的内容,手动修改会被覆盖。所有代码变更都要在src/目录的ES6源码中进行。
  • 你的package.json中的scripts配置是没问题的,保持现有配置即可:
"scripts": {
  "clean": "rm -rf build && mkdir build",
  "build-babel": "babel -d ./build ./src -s",
  "build": "npm run clean && npm run build-babel",
  "start": "npm run build && node ./build/app.js"
}

按照上面的步骤修改后,重新部署到Heroku应该就能正常启动服务了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:32:36