Heroku 节点 js 部署问题:Web 进程在启动后 60 秒内无法绑定到 $PORT

Posted

技术标签:

【中文标题】Heroku 节点 js 部署问题:Web 进程在启动后 60 秒内无法绑定到 $PORT【英文标题】:Heroku node js deployment issue: Web process failed to bind to $PORT within 60 seconds of launch 【发布时间】:2018-12-29 16:22:19 【问题描述】:

我正在尝试通过在 Heroku 上部署一个示例节点 js 应用程序来对其进行测试。我使用 mlab 作为我的数据库云托管。

但不幸的是,我遇到了一些错误。这是来自 Heorku 的错误日志:

2018-07-21T16:43:00.394188+00:00 heroku[web.1]: State changed from crashed to starting
2018-07-21T16:43:03.124528+00:00 heroku[web.1]: Starting process with command `npm start`
2018-07-21T16:43:06.239097+00:00 app[web.1]: 
2018-07-21T16:43:06.239139+00:00 app[web.1]: > quizgiri@1.0.0 start /app
2018-07-21T16:43:06.239141+00:00 app[web.1]: > node app.js
2018-07-21T16:43:06.239142+00:00 app[web.1]: 
2018-07-21T16:43:08.063152+00:00 app[web.1]: listening on port 3000 ...... 
2018-07-21T16:44:03.476862+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2018-07-21T16:44:03.476977+00:00 heroku[web.1]: Stopping process with SIGKILL
2018-07-21T16:44:03.631909+00:00 heroku[web.1]: Process exited with status 137
2018-07-21T16:44:03.646925+00:00 heroku[web.1]: State changed from starting to crashed
2018-07-21T16:44:06.757320+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/tasks" host=quizgiri.herokuapp.com request_id=9379fd55-584e-4693-8d51-75e06c1cce91 fwd="103.25.120.134" dyno= connect= service= status=503 bytes= protocol=https
2018-07-21T16:44:12.243533+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=quizgiri.herokuapp.com request_id=6654c0c4-5c8b-4e52-9539-27d52a3b0c6f fwd="103.25.120.134" dyno= connect= service= status=503 bytes= protocol=https
2018-07-21T16:49:04.284636+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/tasks" host=quizgiri.herokuapp.com request_id=a1ed02bb-2fd7-491b-bbaf-81675c15a3c4 fwd="103.25.120.134" dyno= connect= service= status=503 bytes= protocol=https
2018-07-21T16:49:05.395033+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=quizgiri.herokuapp.com request_id=168d3a5c-8eb7-45fe-b16e-c1e3c4ef36a4 fwd="103.25.120.134" dyno= connect= service= status=503 bytes= protocol=https

我的节点 js 应用只有两个文件。

app.js:

const express = require("express");
var router = express.Router();
const app = express();
var mongojs = require('mongojs');

const port = process.env.port || 3000;

var db = mongojs("my mlab connection string", ['testcollection']);

//Get All Tasks
app.get('/tasks', function(req, res, next)
    console.log(db);
    db.testcollection.find(function(err, tasks)
        if(err)
            res.send(err);
        
        res.json(tasks);
    );
);

app.listen(port, () => 
    console.log(`listening on port $port ...... `);
);

package.json:


  "name": "quizgiri",
  "version": "1.0.0",
  "description": "node server for quizgiri app",
  "main": "app.js",
  "scripts": 
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  ,
  "author": "Anurag Bhattacharjee",
  "license": "ISC",
  "dependencies": 
    "express": "^4.16.3",
    "mongodb": "^3.1.0",
    "mongojs": "^2.6.0"
  

【问题讨论】:

【参考方案1】:

发生此错误是因为您的 Node.js 应用未正确配置为绑定到 Heroku 通过 $PORT 环境变量提供的端口以外的端口。

替换此行后试试

const port = process.env.port || 3000;

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

【讨论】:

哇。非常感谢。浪费了很多时间来弄清楚这里出了什么问题。非常感谢。你救了我。

以上是关于Heroku 节点 js 部署问题:Web 进程在启动后 60 秒内无法绑定到 $PORT的主要内容,如果未能解决你的问题,请参考以下文章

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

heroku desc部署错误=“没有运行Web进程”

Web进程无法绑定$ port节点

Node.js 和 Heroku 错误:Web 进程在启动后 60 秒内无法绑定到 $PORT

没有运行 Web 进程错误 - 在 Heroku 上部署 Django

Heroku 错误 H14(没有运行 Web 进程)