当前位置: 首页 > 知识库问答 >
问题:

Heroku 节点.js和 uWeb.js R10 错误,无法绑定端口

东郭自强
2023-03-14

我创建了一个最小的应用程序,用于测试在heroku上使用dockerfile部署node.jsuWebsockets.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);
        }
    });

构建

# 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

我尝试过的事情:

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

共有1个答案

陆光济
2023-03-14

我做了一些改动,但我认为这是docker的问题,把我的docker文件改成下面的代码片段就可以了。

# 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://来连接。

 类似资料:
  • 我已经启动了一个节点。使用express generator的js应用程序,我遇到了一个奇怪的问题,无法通过浏览器查看页面两次,第一次加载正常,第二次加载不正常,因为节点进程以以下错误结束: 包裹json

  • 我正在使用户外社区,当我试图获得以下信息时: http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/nodes/-root-/children

  • 我正在尝试上传一个基本节点。js服务器应用到heroku。在本地主机中,它工作得非常好。然而,当我上传到Heroku时,应用程序不知何故无法工作。这是我的代码和日志。非常感谢你。 我的PACKAGE.JSON } 我还有一个程序,如下所示: 而赫洛库日志如下:

  • 问题内容: 使用节点8.4.0: 但是,以下错误也不是交互式的:(唯一的区别是分号) 同样在Chrome控制台中: 有人可以解释吗? 澄清度 这与按预期工作的let,var或cosnt解构无关。这与先前定义的变量(或非严格模式)有关:从chrome控制台: 问题答案: 将对象分解为现有变量的正确语法是 这允许成为一种表达。否则,将其解释为带有逗号运算符的块,这将导致错误。 它在控制台中不带括号和分

  • 我不明白这是怎么了。节点v.16.4.2,NPM v7.18.1 错误是 /Users/Downloads/test2/mongoose.js:41 SyntaxError:对象上的令牌无效或意外。在模块的wrapSafe(节点:internal/modules/cjs/loader:1025:15)处编译函数(节点:vm:352:18)_在对象处编译(节点:internal/modules/cj

  • 我有我的节点。具有依赖项的js应用程序 } 它在我的本地主机上运行良好 当我在heroku上托管我的节点应用程序时,我遇到了以下错误。 TypeError:对象#在对象上没有“randomBytes”方法。MemoryStore上的uid(/app/node_modules/express/node_modules/connect/lib/utils.js:121:17)。在对象的generate