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

Node.js应用部署Heroku后出现H10崩溃与R10启动超时问题求助

Node.js部署Heroku出现H10(App crashed)和R10(Boot timeout)错误解决方法

错误分析

从你提供的Heroku日志来看:

  • R10错误:Web进程在启动后60秒内未绑定到Heroku分配的$PORT环境变量指定的端口,这是启动超时的直接触发原因
  • H10错误:应用崩溃,本质是启动过程中出现未捕获的异常,导致进程直接退出

问题根源

你的代码中mongoose.connect未处理连接成功/失败的回调逻辑:

  1. 若数据库连接失败,会抛出未捕获的异常直接终止进程,触发H10错误
  2. 若数据库连接耗时超过60秒,Heroku会判定启动超时,触发R10错误

虽然你已正确使用process.env.PORT || 5000绑定端口,但数据库连接的异常会打断正常启动流程,最终导致服务部署失败。

修复步骤

1. 调整数据库连接与服务器启动顺序

将服务器启动逻辑放在数据库连接成功的回调中,确保服务仅在数据库连接正常后启动,同时捕获连接错误避免进程崩溃:

修改后的代码:

import express from 'express';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';
import dotenv from 'dotenv';

import postRoutes from './routes/posts.js';

const app = express();
dotenv.config();

app.use(bodyParser.json({ limit: "30mb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }));
app.use(cors());
app.use('/posts', postRoutes);

app.get('/', (req, res) => {
    res.send('Hello to Decode API');
});

const PORT = process.env.PORT || 5000;

// 先完成数据库连接,成功后再启动服务器
mongoose.connect(process.env.CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    app.listen(PORT, () => console.log(`Server running on port ${PORT} and connected to database`));
  })
  .catch((err) => {
    console.error('Database connection error:', err.message);
    // 数据库连接失败时主动退出进程,避免Heroku反复重启
    process.exit(1);
  });

// mongoose.set('useFindAndModify', false);

2. 验证Heroku环境变量配置

确保你已在Heroku应用中配置好CONNECTION_URL环境变量:

  • 登录Heroku控制台进入目标应用
  • 切换到「Settings」标签页,找到「Config Vars」区域
  • 添加CONNECTION_URL,值为你的MongoDB连接字符串(与本地.env文件中的内容一致)

3. 检查package.json核心配置

  • 确保包含start启动脚本:
    "scripts": {
      "start": "node index.js"
    }
    
  • 由于代码使用了ES模块的import语法,需在package.json中添加:
    "type": "module"
    

验证修复

部署修改后的代码到Heroku,通过以下命令实时查看日志确认启动状态:

heroku logs --tail

若日志中出现Server running on port XXXX and connected to database的提示,说明服务已正常启动。

内容的提问来源于stack exchange,提问作者okunade femi joel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:42:47