Я бегу node.js следующим образом:Необъяснимые node.js HTTP метания подключения ECONNREFUSED (IPv6?)
> http = require('http')
> http.get('http://myhost.local:8080',
function (res) { console.log("RES" + res) }
).on('error', function (e) { console.log("Error:", e) })
> uri = require('url').parse("http://myhost.local:8080")
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'myhost.local:8080',
port: '8080',
hostname: 'myhost.local',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'http://myhost.local:8080/' }
> http.get(uri,
function (res) { console.log("RES" + res) }
).on('error', function (e) { console.log("Error:", e) })
ошибка генерируется как для неявного и явного разобранного URI, и я получаю следующий результат для как:
Error: { [Error: connect ECONNREFUSED] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect' }
хост myhost.local
является псевдонимом для localhost
в /etc/hosts
, являются:
127.0.0.1 localhost myhost.local myhost
255.255.255.255 broadcasthost
::1 localhost myhost.local myhost
fe80::1%lo0 localhost myhost.local myhost
EDIT: Я попытался практически все перестановки в файле хостов, в том числе наиболее очевидным:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost myhost.local myhost
fe80::1%lo0 localhost
EDIT Я должен также упомянуть, что я попробовал это на более чем один Mac в настоящее время.
Хотя кажется, что это довольно распространенная ошибка, я не видел никаких полезных объяснений или обходных решений. Вот некоторые важные факты:
- Выполнение
$ wget http://myhost.local:8080
работает должным образом, поэтому это не проблема межсетевого экрана. - Запуск
$ telnet myhost.local 8080
, а затем вручную GET'ing url отлично работает, поэтому это не странная проблема HTTP. - У меня нет проблем с использованием node.js для подключения к другим хостам, например. http://www.google.com
Я ожидаю полезной информации система будет включать в себя:
$ node -v
v0.9.11
$ uname -a
Darwin myhost.local 12.2.1 Darwin Kernel Version 12.2.1:
Thu Oct 18 12:13:47 PDT 2012; root:xnu-2050.20.9~1/RELEASE_X86_64 x86_64
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.8.2
BuildVersion: 12C3104
$ sudo netstat -nalt | grep LISTEN | grep 8080
tcp6 0 0 ::1.8080 *.* LISTEN
Кто-нибудь есть какие-либо идеи, что происходит здесь, и что такое исправление может быть?
Вы получаете ту же самую ошибку, если вы используете 'localhost' вместо' myhost.local'? – JohnnyHK
Что-то работает на localhost: 80? – Floby
@JohnnyHK, @Floby: приложение, к которому подключено приложение Google App Engine, привязано к 'myhost'. Позвольте мне опубликовать мой вывод «netstat», хотя, возможно, он освещает –