2012-05-30 22 views
29

Tôi đã cài đặt Nginx và Node.js trong máy chủ của mình.nghe lỗi EADDRNOTAVAIL trong Node.js

Khi tôi cố gắng chạy tập tin Node.js của tôi, tôi nhận được một lỗi:

 
node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
      ^
Error: listen EADDRNOTAVAIL 
    at errnoException (net.js:614:11) 
    at Array.0 (net.js:689:28) 
    at EventEmitter._tickCallback (node.js:192:40) 

Làm thế nào tôi có thể khắc phục vấn đề này?

Cảm ơn!

+0

Thiết lập tệp nút của bạn để lắng nghe? – srquinn

Trả lời

3

Tôi nghĩ bạn cần thêm một chút ngữ cảnh như một số mã của bạn. Tôi đoán bạn đang bắt đầu nghe trên một máy chủ web hoặc một ổ cắm? Dựa trên giả định đó, tôi nhận được một cái gì đó tương tự khi tôi chạy một máy chủ web cơ bản trên máy chủ thử nghiệm của tôi, trừ khi tôi chạy bằng cách sử dụng localhost.

events.js:48 
     throw arguments[1]; // Unhandled 'error' event 
       ^
Error: listen EADDRNOTAVAIL 
    at errnoException (net.js:670:11) 
    at Array.0 (net.js:756:28) 
    at EventEmitter._tickCallback (node.js:190:38) 

Hãy thử thay đổi [hostname] tham số để localhost:

var http = require('http'); 
http.createServer(function).listen(8000, '127.0.0.1'); 
4

Nó có thể là nút đó đã được chạy một máy chủ? Tôi đã nhận được lỗi tương tự và tìm thấy lỗi này trong khi khắc phục sự cố. Tắt máy chủ nút trước đã giải quyết được sự cố của tôi.

+1

Tôi có thể thấy rằng đây là câu trả lời đầu tiên của bạn cho một câu hỏi, vì vậy bạn không có đại diện để đăng bài này làm nhận xét, nhưng trong tương lai, bạn có thể muốn xem xét đăng bài này làm nhận xét. Câu trả lời được coi là một giải pháp cho vấn đề mà bạn khá tự tin sẽ giải quyết được vấn đề. – Fluffeh

+1

Vâng, đó thực sự là trường hợp. Và có bạn đúng :) – jonrh

5

tôi đã nhận được báo lỗi tương tự, và sau đó tôi đã thay đổi cổng và làm việc

+0

Tôi đã nhận được cùng một lỗi và đó là do thực tế là tôi đã có Ruby on Rails ứng dụng đang chạy trên localhost: 3000. Việc dừng ứng dụng kia hoặc thay đổi cổng sẽ khắc phục được sự cố. –

36

Tôi có vấn đề này, và tôi nghĩ đó là một cổng vấn đề, nhưng nó bật ra được một IP vấn đề .

Tôi có biến số môi trường HOST trỏ đến IP tĩnh và máy chủ Node của tôi đang nghe địa chỉ đó. Tại một số thời điểm khi bộ định tuyến của tôi tái chế, nó bắt đầu gán cho máy của tôi một IP mới và tôi bắt đầu nhận được lỗi mà bạn đã đăng. Nó đã được sửa bằng cách thay đổi địa chỉ máy chủ của tôi đang nghe.

cấu hình của tôi:

app.set('port', process.env.PORT || 3000); 
app.set('host', process.env.HOST || '0.0.0.0'); 

http.createServer(app).listen(app.get('port'), app.get('host'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

Hãy chắc chắn rằng máy chủ của bạn là đánh máy của bạn. Trong mọi trường hợp, lặp lại, như @miltonb được đề xuất, luôn hoạt động:

app.set('host', '127.0.0.1'); 
+0

Cáp ethernet của tôi bị mất do đó có IP khác (WiFi). Đã sửa! – Nick

1

Hầu hết thời gian là địa chỉ IP hoặc tên máy chủ. Lý do là, nút js lấy đó làm mục khóa để khởi động máy chủ. nếu có sự mâu thuẫn hoặc địa chỉ ip không chính xác, nó cũi với lỗi này

Lỗi: nghe EADDRNOTAVAIL

hy vọng điều này giúp.

0
var express = require('express'); 

var app = express(); 
app.set('port', process.env.PORT || 3000); 
app.set('host', process.env.HOST || 'localhost'); 

app.listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('host') + ':' + app.get('port')); 
}); 

làm việc cho tôi.
nó cũng chung cho gỡ lỗi bằng localhost và ip cục bộ của bạn mà không có bất kỳ thay đổi nào.

1

Đối với tôi, tôi đã có lỗi tương tự, và khi tôi kiểm tra cấu hình của tôi, tôi thấy rằng host=127.0.0.0 điều này làm tăng lỗi vì nó phải được 127.0.0.1 thay vì 127.0.0.0

0

này cũng sẽ xảy ra trong khi 'ip addr add i: p: v: 6 'vẫn còn trong tình trạng hạn chế hoặc một cái gì đó (chỉ được thực hiện/ing), và giao diện là tôi đoán không hoàn toàn sẵn sàng để lắng nghe vẫn còn thêm địa chỉ ipv6 mới.

Một execSync ngủ trong 2 giây dường như cho phép nghe không lỗi với Lỗi: nghe EADDRNOTAVAIL.

Đó thực sự là lỗi mà tôi nghĩ trong NodeJS 7.4.0 trên Ubuntu vì điều này không xảy ra với việc tạo địa chỉ ipv4 ngay trước khi sử dụng/nghe kết nối.

0

Trong trường hợp của tôi, tôi cố định nó bằng cách kiểm tra thư mục/nhiệm vụ/options

tôi tìm thấy tập tin connect.js trong đó có địa chỉ IP tĩnh mà không chính xác. Tôi chỉ thay đổi nó thành đúng và nó hoạt động.

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