2013-09-25 6 views
6

Ich versuche, meine node.js App auf Heroku zu implementieren, aber wenn ich versuche, es lokal mit Vorarbeiter zu starten, erhalte ich Fehler: EADDRINUSE anhören. Ich habe einen netstat ausgeführt und grepped für den Port, den nichts anderes benutzt, und der Server startet ohne Probleme, wenn er direkt als Knoten http-Server ausgeführt wird.Port beim Start von Node.js App mit Heroku Foreman

Die App, die ich bereitstellen möchte, verwendet mongo und redis. Ich bin mir nicht sicher, ob diese Komponenten den Server, der mit Foreman beginnt, beeinflussen. Hat jemand irgendwelche Vorschläge zu Bereichen, in denen ich nach möglichen Fehlern suchen könnte?

foreman start 
01:37:18 web.1 | started with pid 1835 
01:37:18 web.1 | /usr/local/foreman/lib/foreman/process.rb:66: warning: Insecure world writable dir /usr/local in PATH, mode 040777 
01:37:19 web.1 | events.js:72 
01:37:19 web.1 |   throw er; // Unhandled 'error' event 
01:37:19 web.1 |    ^
01:37:19 web.1 | Error: listen EADDRINUSE 
01:37:19 web.1 |  at errnoException (net.js:863:11) 
01:37:19 web.1 |  at Server._listen2 (net.js:1008:14) 
01:37:19 web.1 |  at listen (net.js:1030:10) 
01:37:19 web.1 |  at Server.listen (net.js:1096:5) 
01:37:19 web.1 |  at Function.app.listen (/Users/craig/Documents/Sandboxes /xxx/node_modules/express/lib/application.js:535:24) 
01:37:19 web.1 |  at Object.<anonymous> (/Users/craig/Documents/Sandboxes/xxx/web.js:25:5) 
01:37:19 web.1 |  at Module._compile (module.js:456:26) 
01:37:19 web.1 |  at Object.Module._extensions..js (module.js:474:10) 
01:37:19 web.1 |  at Module.load (module.js:356:32) 
01:37:19 web.1 |  at Function.Module._load (module.js:312:12) 
01:37:19 web.1 | exited with code 8 
01:37:19 system | sending SIGTERM to all processes 
SIGTERM received 

Danke.

--Additional information--

Die procfile gerade hat einen Eintrag: web: node web.js

und ich habe den Hörer setzen sich wie folgt zusammen:

var port = process.env.PORT || 5000; 
app.listen(port, function() { 
    console.log("Listening on " + port); 
}); 
+1

Versuchen Sie, Ihren HTTP-Server an einem bestimmten Port zu starten? (Beachten Sie, dass Sie 'process.env.PORT' als Portnummer verwenden sollten, wenn Sie einen HTTP-Server auf [tag: heroku] starten möchten) – fardjad

+0

Bitte senden Sie Ihre Procfile und node.ks App-Konfiguration – Winfield

+0

Bitte finden Sie die zusätzlichen Details angefordert oben im ursprünglichen Beitrag – Craig

Antwort

7

I gerade lief dies auf OS X. Es sieht aus wie Vorarbeiter wählt Port 5000 standardmäßig, die mit Bonjour/mDNS/UPNP-Dienste zu widersprechen scheint. (Nach dem, was ich gelesen habe. Ich habe nicht die Zeit genommen, um herauszufinden, was es ist.)

Sie können jedoch den Port ändern, den Vorarbeiter auf zwei Arten verwendet: specify the port on the command line oder create a .foreman file with the port number specified there.

Viel Glück und gute Programmierung!

+3

Daniel hat Recht. Zum Beispiel funktionierte das für mich: Vorarbeiter start -p 8000 Also habe ich die Portnummer angegeben und es hat funktioniert. – zumzum

2

Ich hatte das gleiche Problem, Error: listen EADDRINUSE bedeutet, dass ein Knoten-Server bereits ausgeführt wird.

Stellen Sie sicher, dass Sie keinen Node-Server für dasselbe Projekt lokal ausführen. Wenn Sie lokal an einem GitHub-synchronisierten Projekt arbeiten (z. B. an Port 5000), das an Heroku gebunden ist, können Sie keinen lokalen Knotenserver für dieses Projekt ausführen, da der Port zweimal verwendet wird.

Ich habe tatsächlich einen Knoten-Server auf einem Projekt in einem anderen Terminal-Fenster ausgeführt und nicht sofort bemerkt.

Verwandte Themen