2013-09-25 50 views
6

Tôi đang cố triển khai ứng dụng node.js của mình lên heroku nhưng khi tôi cố gắng khởi chạy ứng dụng cục bộ bằng cách sử dụng foreman, tôi nhận được Lỗi: nghe EADDRINUSE. Tôi đã chạy một netstat và grepped cho cổng không có gì khác là sử dụng nó và máy chủ bắt đầu mà không có vấn đề khi chạy trực tiếp như một máy chủ http nút.Cổng được sử dụng khi khởi chạy ứng dụng Node.js với Heroku Foreman

Ứng dụng tôi đang cố gắng triển khai đang sử dụng mongo và redis Tôi không chắc liệu các thành phần này có ảnh hưởng đến máy chủ bắt đầu bằng Foreman hay không. Có ai có bất cứ đề nghị về các khu vực tôi có thể xem xét cho các lỗi tiềm năng?

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 

Cảm ơn.

--Additional tin về Người

Các procfile chỉ có một mục nhập: web: nút web.js

và tôi đã đặt người nghe như sau:

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

Bạn có đang cố gắng khởi động máy chủ HTTP của mình trên một cổng cụ thể không? (lưu ý rằng bạn nên sử dụng 'process.env.PORT' làm số cổng bất cứ khi nào bạn muốn khởi động máy chủ HTTP trên [tag: heroku]) – fardjad

+0

Vui lòng đăng cấu hình ứng dụng Procfile và node.ks của bạn – Winfield

+0

Vui lòng tìm các chi tiết bổ sung được yêu cầu ở trên bài gốc – Craig

Trả lời

7

tôi chỉ cần chạy vào hệ điều hành này trên OS X. Có vẻ như quản đốc chọn cổng 5000 theo mặc định, dường như xung đột với dịch vụ Bonjour/mDNS/UPNP. (Từ những gì tôi đã đọc. Tôi chưa dành thời gian để chọn nó là gì.)

Tuy nhiên, bạn có thể thay đổi cổng mà quản đốc viên sử dụng theo hai cách: specify the port on the command line hoặc create a .foreman file with the port number specified there.

Chúc bạn may mắn và mã hóa vui vẻ!

+3

Daniel đã đúng. Ví dụ này làm việc cho tôi: foreman start -p 8000 Vì vậy, tôi đã chỉ định số cổng và nó hoạt động. – zumzum

2

Tôi gặp sự cố tương tự, Error: listen EADDRINUSE có nghĩa là máy chủ Node đang chạy.

Kiểm tra xem bạn có đang chạy máy chủ Node cho cùng một dự án cục bộ không. Nếu bạn đang làm việc trên một dự án được đồng bộ hóa GitHub cục bộ (trên cổng 5000 chẳng hạn) được gắn với Heroku, bạn không thể chạy một máy chủ Node cục bộ cho dự án đó vì cổng sẽ được sử dụng hai lần.

Tôi đã thực sự chạy một máy chủ Node trên một dự án trong một cửa sổ Terminal khác và không nhận thấy ngay lập tức.

Các vấn đề liên quan