650 Stimmen

Heroku + node.js Fehler (Webprozess konnte sich nicht innerhalb von 60 Sekunden nach dem Start an $PORT binden)

Ich habe meine erste node.js app (läuft gut lokal) - aber ich bin nicht in der Lage, es über heroku bereitstellen (zum ersten Mal w / heroku als gut). Der Code ist unten. SO lässt mich nicht so viel Code zu schreiben, so würde ich nur sagen, dass die Ausführung des Codes lokal als auch in meinem Netzwerk zeigt kein Problem.

 var http = require('http');
 var fs = require('fs');
 var path = require('path');

 http.createServer(function (request, response) {

    console.log('request starting for ');
    console.log(request);

    var filePath = '.' + request.url;
    if (filePath == './')
        filePath = './index.html';

    console.log(filePath);
    var extname = path.extname(filePath);
    var contentType = 'text/html';
    switch (extname) {
        case '.js':
            contentType = 'text/javascript';
            break;
        case '.css':
            contentType = 'text/css';
            break;
    }

    path.exists(filePath, function(exists) {

        if (exists) {
            fs.readFile(filePath, function(error, content) {
                if (error) {
                    response.writeHead(500);
                    response.end();
                }
                else {
                    response.writeHead(200, { 'Content-Type': contentType });
                    response.end(content, 'utf-8');
                }
            });
        }
        else {
            response.writeHead(404);
            response.end();
        }
    });

 }).listen(5000);

 console.log('Server running at http://127.0.0.1:5000/');

Irgendeine Idee?

12voto

nexuzzz Punkte 228

In meinem Fall habe ich ein Beispiel aus https://hapijs.com/

Um das Problem zu beheben, habe ich

server.connection({ 
    host: 'localhost', 
    port: 8000 
});

mit

server.connection({
    port: process.env.PORT || 3000 
});

12voto

Nishant Yadav Punkte 189

Diese Zeile ändern

app.listen(port);

zu

app.listen(process.env.PORT, '0.0.0.0');

es wird funktionieren

10voto

Georgios Punkte 4609

Während die meisten Antworten hier gültig sind, lag das Problem bei mir darin, dass ich lange Prozesse als Teil der npm run start was die Zeitüberschreitung verursacht hat.

Ich habe die Lösung gefunden ici und um es zusammenzufassen, musste ich einfach umziehen npm run build zu einer postinstall Aufgabe.

Mit anderen Worten: Ich habe das geändert:

"start": "npm run build && node server.js"

dazu:

"postinstall": "npm run build",
"start": "node server.js"

Wenn ich so darüber nachdenke, macht das durchaus Sinn, denn dieser Fehler (der früher gelegentlich auftrat) wurde immer häufiger, je weiter meine App wuchs.

6voto

Akshata Dabade Punkte 357

Ich ändere meinen abhörenden Port von 3000 auf (process.env.PORT || 5000) das Problem gelöst.

5voto

Muhammad Awais Punkte 1118

Ein Neustart aller Dynos in heroku hat den Trick für mich gebracht

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X