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?

1voto

Damith Asanka Punkte 900

Ich hatte dasselbe Problem und konnte es lösen, indem ich "localhost" durch die IP-Adresse "0.0.0.0" ersetzt habe.

1voto

jonyB Punkte 3702

In meinem Fall war weder der Anschluss noch der Host das Problem. Die index.js wurde in 2 Dateien aufgeteilt. server.js :

//server.js
const express = require('express')
const path = require('path')

const app = express()

app.use(express.static(path.resolve(__dirname, 'public')));
// and all the other stuff
module.exports = app

//app.js
const app = require('./server');
const port = process.env.PORT || 3000;
app.listen(port, '0.0.0.0', () => {
    console.log('Server is running s on port: ' + port)
});

von package.json wir liefen node app.js .

Offensichtlich war das das Problem. Nachdem ich die beiden in einer Datei kombiniert hatte, wurde die Heroku-App wie erwartet bereitgestellt.

1voto

Fine Boy Punkte 301

In meinem Fall wurden beim Start Datenbank-Skripte ausgeführt, die viel Zeit in Anspruch nahmen. Ich habe das Problem gelöst, indem ich manuell npm start nachdem die Bereitstellung abgeschlossen ist.

0voto

Upulie Han Punkte 318

Ich habe einen ganzen Tag damit verschwendet, das Problem im Backend zu suchen. Nach dem Durchlaufen aller Lösungen hier für und eine gründliche Log-Inspektion, erkannte es war das Frontend React App.js, die das Problem hatte.

Ich habe jede

Axios.post(`${process.env.REACT_APP_BASE_URL}/createOrder`, {

})

zu

Axios.post(`/createOrder`, {

})

und es hat funktioniert!

Offenbar haben React-Dateien nichts mit der Heroku-Bereitstellung zu tun!

0voto

Emmanuel Ametepee Punkte 291

Ich empfehle Ihnen, das Protokoll sehr gut zu lesen, damit Sie das Problem leicht beheben können. wenn Sie einen PORT als Umgebungsvariable (env) referenzieren, stellen Sie sicher, dass es sich um PORT ない port denn heroku weist automatisch eine PORT Nummer zu Ihrer Anwendung hinzufügen, wenn Sie sie bereitstellen. process.env.PORT ない process.env.port

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