为啥我的 heroku node.js 应用程序给出 at=error code=H10 desc="App crashed" method=GET path="/&qu

Posted

技术标签:

【中文标题】为啥我的 heroku node.js 应用程序给出 at=error code=H10 desc="App crashed" method=GET path="/"?【英文标题】:Why my heroku node.js app is giving at=error code=H10 desc="App crashed" method=GET path="/"?为什么我的 heroku node.js 应用程序给出 at=error code=H10 desc="App crashed" method=GET path="/"? 【发布时间】:2016-12-16 22:01:24 【问题描述】:

我正在尝试在 Heroku 上运行我的简单节点应用程序。

这是目录结构

├── app.js
├── assets
├── blog.html
├── index.html
├── node_modules
└── package.json

这是我的 app.js

let express = require('express'),
    path = require('path');
var app = express();
let server = require('http').Server(app);

app.use(express.static(path.join(__dirname)));

app.get('/', function(req, res, next)
    res.sendStatus(200);
);

app.get('/blog.html', function(req, res,next)
    res.sendFile(path.join(__dirname+"/blog.html"));
);

app.post('/contact', function(req, res, next)

);
server.listen('8000', function() 
    console.log("App is running on port 8000");
);

这是 package.json


  "name": "website",
  "version": "1.0.0",
  "engines" : 
    "node" : "6.3.1",
    "npm" : "3.10.3"
  ,
  "description": "",
  "main": "index.js",
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1",
    "start" : "node app.js"
  ,
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": 
    "express": "^4.14.0"
  

当我进入控制台时,它会正确打印 app is started at xxxx 端口。 但随后应用程序崩溃并显示以下消息

2016-08-10T13:12:49.839138+00:00 app[web.1]: App is running on port xxxx
2016-08-10T13:13:34.944963+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=saras-website.herokuapp.com request_id=28d8705a-d5a4-4aaa-bd8d-4c4c6101fbd4 fwd="106.51.20.181" dyno= connect= service= status=503 bytes=
2016-08-10T13:13:48.295315+00:00 heroku[web.1]: State changed from starting to crashed
2016-08-10T13:13:48.552740+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=saras-website.herokuapp.com request_id=b77e151f-7017-482d-b4ba-15d980534fd7 fwd="106.51.20.181" dyno= connect= service= status=503 bytes=
2016-08-10T13:13:50.163466+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=saras-website.herokuapp.com request_id=1e7b57e5-1056-4cb3-b41f-cd3f11794efe fwd="106.51.20.181" dyno= connect= service= status=503 bytes=

我不知道我在这里做错了什么......感谢帮助

【问题讨论】:

【参考方案1】:

这样设置端口

ES5:

var port = process.env.PORT || 8000;

server.listen(port, function() 
    console.log("App is running on port " + port);
);

ES6:

const port = process.env.PORT || 8000;

server.listen(port, () => 
    console.log("App is running on port " + port);
);

这允许 Heroku 在运行时设置端口。

【讨论】:

是的...我想通了...还有另一条消息,例如Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 我用谷歌搜索并找到了答案。将在接下来的 6 分钟内接受它 Heroku 文档中还有一个关于正确设置端口的页面,供感兴趣的人参考:help.heroku.com/P1AVPANS/… 我在使用 Heroku 部署最新的 Angular 应用程序时遇到了同样的错误,我正在构建没有 express 或任何服务器文件的 Angular 应用程序

以上是关于为啥我的 heroku node.js 应用程序给出 at=error code=H10 desc="App crashed" method=GET path="/&qu的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 heroku node.js 应用程序给出 at=error code=H10 desc="App crashed" method=GET path="/&qu

为啥我的 Discord Bot 在 heroku 中不断崩溃?

Heroku 最佳实践时钟与 node.js

将 Node.js 应用程序部署到 Heroku 的应用程序错误

Heroku + node.js:我有一个使用多个端口的服务器。如何让 Heroku 分配它们?

heroku node.js bash:节点:找不到命令