为什么我的heroku MERN堆栈应用程序崩溃?

时间:2020-04-22 15:39:06

标签: heroku mern

我在heroku上部署了我的mern堆栈应用程序,但出现了错误,我不知道是什么原因。 错误日志

 2020-04-22T15:25:46.000000+00:00 app[api]: Build succeeded
 2020-04-22T15:25:58.707869+00:00 app[web.1]: 
 2020-04-22T15:25:58.707896+00:00 app[web.1]: > contactkeeper@1.0.0 start /app
 2020-04-22T15:25:58.707897+00:00 app[web.1]: > node server.js
 2020-04-22T15:25:58.707897+00:00 app[web.1]: 
 2020-04-22T15:25:59.586133+00:00 app[web.1]: Server started on port 5000..
2020- 04-22T15:25:59.792525+00:00 app[web.1]: Database connected...
2020-04-22T15:26:56.331376+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-22T15:26:56.334688+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-22T15:27:07.526858+00:00 app[web.1]: 
2020-04-22T15:27:07.526882+00:00 app[web.1]: > contactkeeper@1.0.0 start /app
2020-04-22T15:27:07.526883+00:00 app[web.1]: > node server.js
2020-04-22T15:27:07.526883+00:00 app[web.1]: 
2020-04-22T15:27:08.176741+00:00 app[web.1]: Server started on port 5000..
2020-04-22T15:27:08.300897+00:00 app[web.1]: Database connected...
2020-04-22T15:28:05.725653+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-22T15:28:08.166135+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=quiet-stream-92502.herokuapp.com request_id=e53971ab-65b3-4aa5-bf96-678ab2e6101b fwd="105.112.99.16" dyno= connect= service= status=503 bytes= protocol=https
2020-04-22T15:28:09.099701+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=quiet-stream-92502.herokuapp.com request_id=a0b04322-cb79-472b-8c93-19c55d3e0f1b fwd="105.112.99.16" dyno= connect= service= status=503 bytes= protocol=https

2 个答案:

答案 0 :(得分:0)

重复
Found Answer

此外,用于理解
从Heroku的文档中: 通用运行时通过将所有的dyno相互防火墙隔离,从而提供了强大的隔离。唯一可以达到动态性的流量是从路由器转发到侦听$ PORT环境变量中指定的端口号的Web进程的Web请求。工人和一次性测功机无法接收入站请求。
[...]

dynos common-runtime-networking

这意味着您无法设置自定义端口。
您必须使用动态生成的名为“ PORT”的环境变量

答案 1 :(得分:0)

如果仔细查看错误,您会注意到它说在端口5000上运行。得到错误的原因是因为您没有使用Heroku分配给应用程序的端口号。

由于您正在使用快递,因此您的SELECT ARRAY[('{"state": [3, 4, 5]}'::jsonb->'state'->>1)::int] 应该看起来像这样

app.listen

请确保您不要const PORT = process.env.PORT || 5000; app.listen(PORT, () => { console.log("server has started"); }); 放在 5000之前。当您尝试部署到heroku时,这将导致错误。