【问题标题】:Non-specific Heroku deployment error (Node.js, socket.io)非特定 Heroku 部署错误(Node.js、socket.io)
【发布时间】:2018-01-14 06:45:44
【问题描述】:

我的目的是在 Heroku 上部署一个简单的 Web 应用程序。 我曾经在本地托管这个应用程序,但现在我正在使用 Heroku 将其联机。

打开应用程序时,它只是说:“应用程序发生错误,无法提供您的页面。”

没有错误号或提示为什么应用程序无法运行,这里是所有相关代码:

客户端代码:

var socket;
socket = io.connect("https://fakename.herokuapp.com"); 

服务器端 node.js 代码:

var express = require('express');
var Victor = require('victor');

var app = express();

var server = app.listen(process.env.PORT || 3000, listen);

function listen() {
  var host = server.address().address;
  var port = server.address().port;
  console.log("server is up");
}

app.use(express.static('public'));

var io = require('socket.io')(server);

当然包括 Procfile 和 package.json。

【问题讨论】:

  • 键入“heroku logs”,它将注销您的heroku应用实例中出现的错误消息。
  • 对不起,我没有提到这一点,但构建日志中没有任何错误,唯一接近错误的是 NPM_CONFIG_LOGLEVEL=error

标签: node.js heroku socket.io


【解决方案1】:

我认为您在新建 socket.io 实例时传递了错误的实例。请试试这个

const app = express();
const http = require('http').Server(app);
const io = socket(http);

...

io.on("connection", socket=> ()=>{...});
http.listen(process.env.PORT || 3000);

它来自官方文档https://socket.io/docs/,我正在用于我当前的项目。 另外,实际上我还没有尝试在 heroku 实例中运行 Web 套接字服务。但是,heroku 基本上是为客户提供自动缩放服务。这意味着您的应用程序可以通过一些负载平衡在多个服务器上运行。这可能会导致 websocket 无法正常工作。在这种情况下,通常鼓励做的是实施粘性会话。请尝试我上面发布的代码,如果它也不起作用,请告诉我。

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2021-02-12
    • 2021-05-10
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多