Heroku Node.js 和 uWebsockets.js R10 错误,绑定端口失败

Posted

技术标签:

【中文标题】Heroku Node.js 和 uWebsockets.js R10 错误,绑定端口失败【英文标题】:Heroku Node.js and uWebsockets.js R10 Error, failed to bind port 【发布时间】:2021-12-02 16:17:50 【问题描述】:

我创建了一个最小的应用程序,用于测试在 heroku 上使用 dockerfile 部署 node.js uWebsockets.js 服务器。 Heroku 日志显示它失败并出现 R10(启动超时)错误,未能绑定到 $PORT,尽管它之前的日志显示它正在侦听该端口。

server.js

const uWS = require('uWebSockets.js');
const port = process.env.PORT || 9001;
const host = '0.0.0.0'

const app = uWS.App()
    .ws('/*', 
        maxPayloadLength: 16 * 1024 * 1024,
        idleTimeout: 160,
    )
    .listen(port, host, (token) => 
        if (token) 
            console.log('Listening to port ' + port);
         else 
            console.log('Failed to listen to port ' + port);
        
    );

Dockerfile

# syntax=docker/dockerfile:1

FROM node:17.0.1
ENV NODE_ENV=production
WORKDIR /app
COPY ["package.json", "package-lock.json*", "./"]
RUN npm install --production
COPY . .
EXPOSE $PORT
CMD [ "npm", "start" ]

Heroku 日志

2021-12-02T15:34:50.509492+00:00 app[web.1]: > dummyserver@1.0.0 start
2021-12-02T15:34:50.509492+00:00 app[web.1]: > node server.js
2021-12-02T15:34:50.509492+00:00 app[web.1]: 
2021-12-02T15:34:50.586940+00:00 app[web.1]: Listening to port 39686
2021-12-02T15:35:49.393274+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2021-12-02T15:35:49.424793+00:00 heroku[web.1]: Stopping process with SIGKILL
2021-12-02T15:35:49.596430+00:00 heroku[web.1]: Process exited with status 0

我尝试过的事情:

    使用 process.env.PORT 使用主机作为 0.0.0.0 直接推送到 heroku 而不是 dockerfile

【问题讨论】:

你解决过这个问题吗?我遇到了同样的问题。 是的,刚刚回答了我认为解决了我的问题的问题。希望对你有帮助 【参考方案1】:

我做了很多更改,但我认为这是一个 docker 问题,将我的 dockerfile 更改为下面的 sn-p 使其工作。

# syntax=docker/dockerfile:1

FROM node:17.0.1
WORKDIR /app
COPY "package.json" .
RUN npm install
COPY . .
EXPOSE $PORT
CMD [ "npm", "start" ]

还要确保在前端使用 wss://app-name.herokuapp.com 而不是 ws:// 进行连接。

【讨论】:

以上是关于Heroku Node.js 和 uWebsockets.js R10 错误,绑定端口失败的主要内容,如果未能解决你的问题,请参考以下文章

无法在 heroku 上使用 node.js 连接到 mongolab

Heroku Node.js 和 uWebsockets.js R10 错误,绑定端口失败

部署 Node.js 应用程序时出现 Heroku 错误

端口错误:heroku 中的 vue.js+node.js 项目

带有 Node.js 的 Heroku 上的 Tesseract-OCR

Node.JS、Express 和 Heroku - 如何处理 HTTP 和 HTTPS?