2016-06-08 15 views
0

Hinweis: Alles funktioniert perfekt auf meiner lokalen Host-Umgebung. Wenn ich git push heroku master bekomme ich einen erfolgreichen Push/deploy. Ich überprüfe die Heroku Logs und ich sehe diesen Fehler:Port Timeout mit NodeJS/Webpack Heroku Deployment

[]: Stopping process with SIGKILL 
[]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 120 seconds of launch 

ich viele Beiträge zu diesem Thema gelesen haben und das Update, das ich sehe, ist

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

Das ist nicht meine Lösung ist, da ich bin das mache ich schon in meinem Servercode. Hier ist mein Server-Code:

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

var app = express(); 
app.set('port', (process.env.PORT || 4000)); 

app.use(express.static(__dirname + '/public')); 
app.get('*', function response(req, res) { 
    res.render(path.join(__dirname, 'public/index.html')); 
}); 

app.listen(app.get('port'), 'localhost', function onStart(err) { 
    if (err) { 
    console.log(err); 
    } 
    console.info('==> Listening on port %s.', app.get('port')); 
}); 

HINWEIS: In den Heroku Protokolle, ==> Listening on port %s. gedruckt wird und dann das Timeout geschieht danach (ohne Fehler). So kommt es ohne Fehler zum Ende meines Server-Codes und es druckt den richtigen, zufälligen Heroku-Port.

Darüber hinaus erstellt webpack -p auch meine bundle.js korrekt zu.

Mein package.json hat diese beiden Befehle und sie fehlerfrei ausgeführt werden:

"start": "NODE_ENV=production webpack -p && node server", 
"postinstall": "bower install --force" 

ich ratlos wirklich bin. Bitte helfen Sie!

EDIT: Ich glaube, ich habe das Problem wirklich auf meine server.js Datei isoliert. Am Ende machte ich webpack -p und schob die bundle.js Datei hoch - im Wesentlichen umging Webpack auf Heroku. Ich mache dann den einfachen Befehl npm start (der im Wesentlichen nur node server.js Befehl ist) und meine App immer noch Zeit beim Versuch, eine Verbindung zum Port herzustellen.

Antwort

1

WOW Ich habe es herausgefunden. Ich hatte diese Zeile in meinem Server:

app.listen(app.get('port'), 'localhost', function onStart(err) .... Ich brauchte nur 'localhost' aus der listen() Funktion zu entfernen.

+1

Sie können auch localhost zu '0.0.0.0 'ändern :-) – scott

+0

@scott Danke scott, funktioniert perfekt. – Overdrivr

Verwandte Themen