7

次のコード行が node.js で機能する理由を理解するのに苦労しています。

server.listen(12345, "127.0.0.1"); // works

しかし、これはしません:

server.listen(12345, "localhost"); // fails

文字どおりにコーディングlocalhostすると、次のエラーがスローされます。

events.js:45
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: ECONNREFUSED, Could not contact DNS servers
    at IOWatcher.callback (dns.js:74:15)

ファイルで定義されているようにローカルホストであるため、「DNSサーバーに連絡する」必要がある理由がわかりませんHOSTS(Windowsでnode.jsを使用しています)。

ハードコーディングが機能しないのはなぜlocalhostですか?

4

3 に答える 3

4

uouはcygwinビルドを使用していますか?「ドメイン名解決(DNS)の設定」を試しましたか?

Cygwinは、DNSクエリにWindowsを内部的に使用します。node.jsは、/ etc/resolv.confに依存するc-aresライブラリを使用します。Cygwinには空の/etc/resolv.confが付属しています。スクリプトからネットワークを有効にするには、次のIPをファイル(Google Public DNS)に追加します。

$ vim /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
于 2011-07-24T14:16:54.693 に答える
3

cygwin ビルドの使用が問題であることが判明しました。

http://nodejs.org/を調べたところ、ごく最近になってネイティブの Windows バイナリ ファイルが利用できるようになったことがわかりました。これは魅力的です。

于 2011-07-26T20:13:18.683 に答える
1

私は個人的にnode.jsを使用したことはありませんが、簡単に検索すると興味深い結果が得られました...

私が知る限り、私が見たものはすべて、リッスンしようとしている IP アドレスを見つける必要があることを示しています。例を次に示します。node.js でローカル IP アドレスを取得します。この動作も理にかなっています。ドメイン名は恣意的です。重要なのは IP です。

node.js の仕組みについて何かが欠けている場合は、申し訳ありません。

于 2011-07-24T12:53:21.367 に答える