非特定Heroku部署错误(Node.js,socket.io)

问题描述:

我的意图是在Heroku上部署一个简单的Web应用程序。 我曾经在本地托管这个应用程序,但现在我正在使用Heroku获得它的在线。非特定Heroku部署错误(Node.js,socket.io)

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

没有错误编号或没有暗示为什么应用程序不能正常工作,这里是所有相关代码:

客户端代码:

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

服务器端节点.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。

+0

键入“heroku日志”,它将注销在您的heroku应用程序实例中引发的错误消息。 – supergentle

+0

对不起,我没有提到这一点,但在构建日志中没有任何错误,唯一接近错误的是NPM_CONFIG_LOGLEVEL = error – Canatron

我认为当你新建一个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无法正常工作。在这种情况下,通常鼓励做的是实施粘性会话。请尝试我上面张贴的代码,并请让我知道,如果它也不起作用。

+0

nope,没有任何改变。不起作用。 – Canatron