Heroku部署Parse Server遇H10崩溃错误,疑与MongoDB配置相关
Parse Server在Heroku部署后H10崩溃问题解决
问题概述
目前仍可在Heroku上使用Parse Server吗?相关教程多为2-7年前的内容。将parse-server-example的代码fork后部署到Heroku,访问应用URL时出现H10崩溃错误:
heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=parse-server-example-heroku-5799b138a415.herokuapp.com request_id=6887bbaa-b870-4fb1-81a4-d23aebeff877 fwd="79.117.228.140" dyno= connect= service= status=503 bytes= protocol=https
查阅相关解决方案无效,且仓库中未找到Procfile。原教程推荐的mLab MongoDB已停用,尝试了ObjectRocket for MongoDB,但可能因配置问题未解决错误,当前配置如下:
export const config = { databaseURI: process.env.DATABASE_URI || process.env.MONGODB_URI || 'mongodb://localhost:27017/dev', cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js', appId: process.env.APP_ID || 'myAppId', masterKey: process.env.MASTER_KEY || 'myMasterKey', //Add your master key here. Keep it secret! serverURL: process.env.SERVER_URL || 'https://parse-server-example-heroku-5799b138a415.herokuapp.com/', // Don't forget to change to https if needed liveQuery: { classNames: ['Posts', 'Comments'], // List of classes to support for query subscriptions }, };
解决方案
1. 确认Parse Server在Heroku的可用性
可以,Heroku目前完全支持Parse Server,旧教程失效主要是因为依赖服务(如mLab停用)和Heroku环境配置更新导致,只要调整适配当前环境即可正常运行。
2. 解决H10崩溃的关键步骤
添加Procfile:Heroku需要Procfile指定应用启动命令。在项目根目录创建无后缀的
Procfile文件,内容为:web: npm start这是因为parse-server-example的package.json中
start命令已配置为启动Parse Server的脚本。修正MongoDB配置:
- 在Heroku应用的「设置」-「配置变量」中,添加
MONGODB_URI或DATABASE_URI,值为ObjectRocket提供的完整连接字符串(需包含用户名、密码、主机地址、端口、数据库名称,格式示例:mongodb://<用户名>:<密码>@host:端口/数据库名?authSource=admin) - 本地先测试连接:将本地环境变量设置为ObjectRocket的URI,运行项目确认能正常连接MongoDB,排除数据库连接失败导致的崩溃。
- 在Heroku应用的「设置」-「配置变量」中,添加
查看崩溃具体原因:
执行命令查看Heroku实时日志,定位崩溃根源:heroku logs --tail常见原因包括:数据库连接超时、环境变量缺失、Node.js版本不兼容、依赖安装失败等。
配置必要环境变量:
在Heroku配置变量中添加以下必填项,不要依赖代码中的默认值:APP_ID:自定义的应用IDMASTER_KEY:自定义的主密钥(需保密)SERVER_URL:Heroku应用的完整HTTPS地址
检查依赖与Node.js版本兼容性:
- 确认package.json中
parse-server的版本支持Heroku当前默认的Node.js版本(可在Heroku配置变量中设置NODE_VERSION指定兼容版本) - 若部署时依赖安装异常,可删除本地的
package-lock.json后重新推送代码,让Heroku重新安装适配的依赖版本
- 确认package.json中
内容的提问来源于stack exchange,提问作者Oleksandr Matrosov
相关产品推荐
相关产品推荐

