Nodejs Express in der Heroku-App EACCES 0.0.0.0:80

Lesezeit: 3 Minuten

Ich versuche, eine Node-App auf einer neu erstellten Heroku-App aus ihrem Web auszuführen. Ich habe ihre Schritte befolgt und erhalte immer noch Fehler beim Anzeigen des App-Status.

Ich folgte dem Node.js beginnt Abschnitt ohne die heroku create Befehl, da ich bereits aus dem Web erstellt habe.

Also wenn ich laufe: heroku ps:scale web=1 es zeigt mir:

Dynos skalieren … fertig, läuft jetzt im Web bei 1: Free

Aber beim Laufen heroku ps:

=== web (kostenlos): npm run start (1)

web.1: abgestürzt am 25.10.2018 11:25:49 -0300 (vor ~ 8m)

Also meine Anmeldung heroku logs --tail Zeig mir diesen Fehler:

2018-10-25T14:25:44.000000+00:00 App[api]: Erstellung erfolgreich

2018-10-25T14:25:46.451739+00:00 Heroku[web.1]: Prozess mit Befehl starten npm run start

2018-10-25T14:25:49.113832+00:00 App[web.1]:

2018-10-25T14:25:49.113864+00:00 App[web.1]: > [email protected] starte /app

2018-10-25T14:25:49.113866+00:00 App[web.1]: > Knoten server.js

2018-10-25T14:25:49.113867+00:00 App[web.1]:

2018-10-25T14:25:49.418151+00:00 App[web.1]: events.js:167

2018-10-25T14:25:49.418191+00:00 App[web.1]: Werfer äh; // Unbehandeltes ‘Fehler’-Ereignis

2018-10-25T14:25:49.418193+00:00 App[web.1]: ^

2018-10-25T14:25:49.418194+00:00 App[web.1]:

2018-10-25T14:25:49.418196+00:00 App[web.1]: Fehler: Höre EACCES 0.0.0.0:80

Also habe ich überprüft, ob ich beim Einrichten einen Fehler gemacht habe.

Ich verwende ein einfaches Express-Routing und einen Server mit diesem Code:

app.get("https://stackoverflow.com/", (req, res) => { ... });
app.listen(80, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

Außerdem habe ich dafür gesorgt, dass ich hinzugefügt habe engines zu Paket.json:

"scripts": {
    "start": "node server.js"
},
"engines": {
    "node": "10.11.0",
    "npm": "6.4.1"
},

Ich habe auch eine erstellt Profil Datei im Root-Pfad mit web: npm run start Innerhalb.

Wenn also alles überprüft ist, führe ich einfach diese Befehle aus und alles sieht gut aus, bis ich die Protokolle überprüfe oder die App besuche:

git commit -am "my commit text"
git push heroku master

Ich sehe das in den Logs:

remote: —–> Komprimierung…

Fernbedienung: Fertig: 18.3M

Fernbedienung: —–> Starten…

Fernbedienung: Veröffentlicht v12

Fernbedienung: https://my-app.herokuapp.com/ nach Heroku entsandt

Fernbedienung:

remote: Verifizieren der Bereitstellung … erledigt.

Zu https://git.heroku.com/my-app.git

3656da0..f1eb078 Meister -> Meister

Also … Irgendwelche Vorschläge, was ich falsch mache? Danke im Voraus.

Sie müssen den Port angeben, auf dem die App in der Umgebungsvariable lauschen soll.
Heroku führt unsere App auf einem dynamischen Port aus.

Versuchen Sie, dies zu verwenden:

const PORT = process.env.PORT || 3000;
app.listen(PORT, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

Außerdem sollten Sie den Port nicht auf 80 binden, da es sich um einen reservierten Standard-HTTP-Port handelt.

  • Ok…es hat funktioniert. Danke. Aber ich habe es schon mit Port 3000 probiert und da war das gleiche. Ich habe getestet.

    – Martin Fernández

    25. Oktober 2018 um 15:12 Uhr

  • Port 3000 ist nur für den Fall, wenn die Umgebungsvariable nicht definiert ist. Heroku weist der Umgebungsvariable einen dynamischen Port zu

    – AkshayM

    25. Oktober 2018 um 15:13 Uhr

Benutzer-Avatar
Zayrus

Heroku Dynos stellt einen dynamischen Port bereit, an den sich Ihre App binden kann. Dieser Wert wird in der Umgebungsvariable $PORT angezeigt. Sie müssen Ihren Code ändern, um stattdessen an diesen Port zu binden.

const port = process.env.PORT || 3000;

app.listen(port, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

1011330cookie-checkNodejs Express in der Heroku-App EACCES 0.0.0.0:80

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy