2016-06-16 2 views
0

node.js http serverを実行しようとしていますが、node.jsはポートが使用中であると考えているため失敗します。ただし、netstatを使用してポートリストを確認すると、ポートが空いていることが示されます。他のポートも同じエラーが発生しよう:Node.jsポートが誤って使用されていると主張しています

var activePort = +process.argv[2]; 
var serverEndpoint = http.createServer(function(req, res) { 
}); 
serverEndpoint.listen(activePort); 

{ [Error: listen EADDRINUSE :::30009] 
    code: 'EADDRINUSE', 
    errno: 'EADDRINUSE', 
    syscall: 'listen', 
    address: '::', 
    port: 30009 } 

しかし私はforeverを使用して(ちょうど別のポート番号で)複数の同じプロセスを実行しています - 私は、これはエラーに何らかの関係を有することができると思っています。

+0

インスタンスを1つだけ実行するとどうなりますか?私はノードから使用中のポートに関する誤った報告をしたことはありません。 –

+0

これは間違ったレポートだとは思わない。 EADDRINUSEと表示されている場合は、既にそのポートで実行中のものがあります。 OSサービスを使用して、そのポートで何が実行されているかを確認する必要があります。 – jfriend00

+0

@AndersBornholmスクリプトの最初の8つのインスタンスがうまく動作します。 – Rytis

答えて

0

明らかに、ポートは実際に使用されていました。私のシステムは頻繁に使用されていたので、一時的なポート範囲のほとんどが積極的に使われていました。私は一時的なポート範囲でnode.jsポートを作成しようとしていました。そのため、Node.jsはランダムに失敗しますが、netstatはわずか数秒後にもう使用中のポートを表示しません。

私は一時的なポート範囲(sysctl net.ipv4.ip_local_port_range)を調整しましたが、Nodeは使用中のポートについて不平を言わなくなりました。

+0

netstat -aは、ポートが使用中かどうかを判断するのに役立ちます。これはほとんどのo/sesで動作するはずです – ojf

+0

問題は、ポートが断続的に使用されていたため、探しているときにnetstatに表示されませんでしたが、ノードがアクセスしようとしたときによく使用されていました。私はそれがちょうど私がそれを見ていない純粋な(un)運だったと思う。 – Rytis

関連する問題