2015-06-27 37 views
16

我發現了十幾個快速啓動應用程序的解決方案,並設置了偵聽端口。 但我有一個不使用Express的應用程序,事實上並沒有監聽任何東西。 成功運行60秒後,我收到一條Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch消息。 我如何解決它?謝謝。

回答

29

經過大量谷歌上搜索我的決定npm install express並添加

var express = require('express'); 
var app  = express(); 

app.set('port', (process.env.PORT || 5000)); 

//For avoidong Heroku $PORT error 
app.get('/', function(request, response) { 
    var result = 'App is running' 
    response.send(result); 
}).listen(app.get('port'), function() { 
    console.log('App is running, server is listening on port ', app.get('port')); 
}); 

這種固定的錯誤,儘管我不喜歡加入快遞,只是爲了避免一個錯誤。如果有人找到更好的解決方案,請告訴我。

+7

我不知道什麼是最好的解決方案,但有一件事我知道(即沒有工作)是使用Node.js的內置模塊'HTTP '而不是要求明確的模塊。 '''var http = require('http'); (','正在運行\ n'); })。listen(process.env.PORT || 5000); ''' –

+1

看看下面關於改變你的procfile和通過@pille縮放你的dynos的答案。它比這個答案好得多,因爲它不是一種解決方法,而是正確的解決方法。 – otusweb

24

如果您的應用程序不聽任何端口,那麼你應該在你Procfile使用其他類型的應用程序,我的意思是在Procfile您有:

worker: node app.js 

web: node app.js 

代之以「web」類型的應用程序意味着您的應用程序必須監聽某個端口

+2

看起來,Heroku似乎忽略了Procfile中的設置。 – Pille

+0

@Pille,你安裝了[node-foreman](https://github.com/strongloop/node-foreman)嗎? –

+0

在我的情況下,它是'worker:npm start',但這個想法保持不變。它的工作,非常感謝! –

18

另一種方法是將網絡中的dynos(標準設置,無論Procfile中的設置如何)更改爲worker w這些命令:

heroku ps:scale web=0 
heroku ps:scale worker=1 

有時Heroku會忽略Procfile中的設置。

+1

第二個命令失敗了。我必須首先在我的Procfile中設置'worker:npm start'。 –

+0

這對我有用,它沒有開始,直到我刪除了heroku ps:scale web = 0行,謝謝! – spences10

0

我有同樣的問題:

錯誤R10(啓動超時) - >網絡進程未能推出

60秒

我試過很多東西內綁定到$ PORT。

不使用表達以下工作:

http.createServer(onRequest).listen(process.env.PORT || 6000) 
+0

我需要在哪裏設置該行? – itReverie

+0

我有同樣的問題,但我使用AdonisJS,我不能編輯這一行... –