2017-08-07 68 views
0

我的意圖是在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

回答

0

我認爲當你新建一個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