2015-06-27 7 views
16

Ho trovato una dozzina di soluzioni per le app con alimentazione Express con l'impostazione della porta su cui ascoltare. Ma ho un'app che non usa Express e in effetti non ascolta nulla. E dopo 60 secondi di funzionamento riuscito, ricevo un messaggio Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch. Come posso aggirarlo? Grazie.

risposta

29

Dopo un sacco di googling ho deciso di npm install express e aggiungere

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')); 
}); 

Questo risolto l'errore, anche se non mi piace l'aggiunta espressa solo per evitare un errore. Se qualcuno trova una soluzione migliore, faccelo sapere.

+7

non sono sicuro che cosa è la soluzione migliore, ma una cosa che so (che ha fatto il lavoro) è stato quello di utilizzare Node.js modulo incorporato 'http 'invece di richiedere il modulo espresso. '' 'var http = require ('http'); http.createServer (function (req, res) { res.writeHead (200, {'Content-Type': 'text/plain'}); res.send ('è in esecuzione \ n'); }). listen (process.env.PORT || 5000); '' ' –

+1

Guarda la risposta qui sotto su come cambiare il tuo procfile e ridimensionare le tue dinamiche con @pille. È molto meglio di questa risposta in quanto non è una soluzione, ma il modo corretto per farlo. – otusweb

24

Se la vostra applicazione non ascolta qualsiasi porta allora si dovrebbe utilizzare un altro tipo di applicazione in te Procfile, voglio dire in Procfile avete:

web: node app.js 

sostituirla con:

worker: node app.js 

tipo di applicazione "web" significa che la tua app DEVE ascoltare alcune porte

+2

Come sembra, Heroku sembra ignorare le impostazioni nel Procfile. – Pille

+0

@Pille, hai installato [node-foreman] (https://github.com/strongloop/node-foreman)? –

+0

Nel mio caso era 'worker: npm start', ma l'idea rimane la stessa. Ha funzionato, grazie mille! –

18

Un altro modo sarebbe cambiare i dynos dal web (impostazione standard indipendentemente dalle impostazioni in Procfile) a worker w Con questi comandi:

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

A volte Heroku ignora le impostazioni nel Procfile.

+1

Il secondo comando non è riuscito per me. Ho dovuto prima impostare 'worker: npm start' nel mio Procfile. –

+0

Questo ha funzionato per me, beh non ha avuto inizio finchè non ho rimosso il heroku ps: scale web = 0 line, grazie! – spences10

0

Ho lo stesso problema:

errore R10 (timeout di avvio) -> processo Web non è riuscito a legarsi a $ PORT entro 60 secondi dal lancio

ho provato molte cose.

Le seguenti opere senza usando espresso:

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

dove devo impostare quella linea? – itReverie

+0

Ho lo stesso problema, ma uso AdonisJS e non posso modificare questa riga ... –

Problemi correlati