2011-07-24 22 views
7

estoy teniendo dificultades para entender por qué la siguiente línea de código funciona en Node.js:¿Por qué no puedo escuchar en 'localhost' pero puedo escuchar en '127.0.0.1'?

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

pero éste no:

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

Codificación localhost, literalmente, da como resultado el siguiente error arrojado:

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

no entiendo por qué se debe, ya que está localhost 'servidores DNS de contacto, según se define en mi HOSTS archivo (estoy usando node.js en Windows).

¿Por qué no funciona la codificación rígida localhost?

+4

¿Ha comprobado su archivo de hosts para asegurarse de que la asignación del localhost no se haya sobrescrito? ¿Qué sucede si hace ping al localhost desde la línea de comando? – shanethehat

+0

@shanethehat: Eso funciona bien; mi servidor web en 'http: // localhost /' no tiene ningún problema tampoco. – pimvdb

+0

¿Ha intentado usar "http: // localhost" (espacio agregado como el comentario se altera de lo contrario)? Lo pregunto porque has dicho que probaste "localhost" y luego lo probé con http en el navegador. Si solo escribe "localhost" en el navegador, el navegador le hace un favor y automáticamente lo antepone http: // para usted. – rf43

Respuesta

3

Resultó que el uso de la acumulación cygwin era el problema.

Miré http://nodejs.org/ y descubrí que solo recientemente se puso a disposición un archivo binario nativo de Windows, que funciona como un amuleto.

1

He Node.js, sin embargo un poco de búsqueda rápida aparecido algunos resultados interesantes ...

De lo que puedo decir que nunca utilizado personalmente, todo lo que he visto dice que es necesario encontrar la dirección IP que estás buscando escuchar Aquí hay un ejemplo: Get local IP address in node.js este comportamiento también tiene sentido. Los nombres de dominio son arbitrarios, es el IP el que importa, por lo que a veces es algo con lo que se quiere tratar.

Si me falta algo sobre cómo funciona node.js lo siento.

3

¿Estás usando cygwin build? ¿Ha intentado 'Set up Domain Name Resolution (DNS)':

Cygwin utiliza internamente Windows para las consultas DNS. node.js usa la biblioteca c-ares que se basa en /etc/resolv.conf. Cygwin se envía con un /etc/resolv.conf vacío. Con el fin de una red habilitada de las secuencias de comandos, añadir estas direcciones IP en el fichero (Google Public DNS):

$ vim /etc/resolv.conf 

nameserver 8.8.8.8 
nameserver 8.8.4.4 
+0

No lo hice, pero ¿dónde debería guardar el archivo '/ etc/resolv.conf' en Windows? – pimvdb

+0

'/' suele ser el directorio de instalación de cygwin, si tienes cygwin instalado en 'c: \ cygwin' entonces' resolv.conf' es 'c: \ cygwin \ etc \ resolv.conf' –

Cuestiones relacionadas