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?

0voto

Dies ist auch ein guter Weg, um den Fehler zu beheben.

  const PORT = process.env.PORT || 3000                                                   
   app.listen(                                                                                 
    PORT,                                                                                                    
    '0.0.0.0',                                                                                
    function () {                                                                                                             
    console.log("Server started.......");                                                              
    }                                                                                                                   
  );

0voto

Josh Kardos Punkte 15

Mein Problem war, dass ich beim Bereitstellen auf Heroku einen Fehler bekam:

Webprozess konnte sich nicht innerhalb von 60 Sekunden nach dem Start an $PORT binden

beim Laufen heroku logs --tail im Terminal. ABER die Anwendung wurde wie erwartet ausgeführt, wenn ich den Server lokal ausführte.

Ich hatte dies in meinem index.js Datei (Server-Datei)

const PORT = process.env.port || 4000

app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`)
})

Aber das hätte man haben müssen

const PORT = process.env.PORT || 4000

app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`)
})

Verwenden Sie process.env.PORT , nicht process.env.port denn port ist nicht dasselbe wie PORT offensichtlich.

Kredit an gprasant .

0voto

Elmatsidis Paul Punkte 375

In meinem Fall hatte ich zwei Probleme...

1) überhaupt kein Hörer, weil die Anwendung von einer anderen Eintragsdatei aus ausgeführt wird und dieses Ausführungsskript aus package.json "scripts" gelöscht wurde

enter image description here

2) Problem der Groß- und Kleinschreibung bei 'Sequelize' anstelle von 'sequelize'

enter image description here

0voto

Ich hatte das gleiche Problem, aber mit express und apollo-server. Die Lösung von ici :

Die einzige besondere Überlegung, die erforderlich ist heroku zu erlauben, den Port zu wählen, an dem der Server bereitgestellt wird. Andernfalls, kann es zu Fehlern kommen, wie z. B. einer Zeitüberschreitung der Anfrage.

So konfigurieren Sie apollo-server für die Verwendung eines Ports kann die listen-Funktion in Ihrer Setup-Datei mit einem Port aufgerufen werden aufgerufen werden, der durch die Umgebungsvariable PORT definiert ist:

server.listen({ port: process.env.PORT || 4000 }).then(({ url }) => { console.log(Server ready at ${url}); });

0voto

Chris Punkte 9382

Wenn Sie, wie ich, Heroku so konfigurieren, dass ein Skript von Ihrem package.json Datei bei der Bereitstellung zu verwenden, stellen Sie sicher, dass Sie den Wert von PORT in diesem Skript! Wenn Sie das tun, wird es Ihnen wie mir ergehen und Sie werden eine Stunde damit verbringen, herauszufinden, warum Sie diese Fehlermeldung erhalten.

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