- Node.js 0.10.26
- OS X 10.9.2 (также на бродячей коробке Ubuntu)
В двух разных модулях моей системы, когда я запускаю тесты с использованием мокко, я получаю эту ошибку:
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }
Обычно это означает, что я пытался разрешить несуществующий хост. Я попытался обнаружить проблему, используя dtrace с этим скриптом (который я нашел и немного изменил):
#!/usr/sbin/dtrace -s
#pragma D option quiet
dtrace:::BEGIN
{
printf("%-20s %-12s %s\n", "TIME", "LATENCY(ms)", "HOST");
}
pid$target::getaddrinfo:entry
{
self->host = copyinstr(arg0);
self->start = timestamp;
}
pid$target::getaddrinfo:return
/self->start/
{
printf("%d", arg1);
this->delta = (timestamp - self->start) / 1000000;
printf("%-20Y %-12d %s\n", walltimestamp, this->delta, self->host);
self->host = 0;
self->start = 0;
}
Используя это, я вижу, что каждый хост, на который попадают мои тесты, находится либо в моем файле хоста, либо является моим именем хоста. Выводится printf("%d", arg1);
(я думаю) возвращаемое значение функции. К сожалению, возвращаемое значение, которое я вижу, представляет собой какое-то большое число, а не 0
или -1
как должно быть а>.
Так что, вероятно, что-то не так с моим скриптом dtrace, но это не объясняет мою большую проблему:
Почему хост data-proxy
не разрешен, когда мой файл hosts содержит 127.0.0.1 data-proxy
? и почему это происходит со мной только тогда, когда я запускаю тесты с мокко, а не когда я запускаю свои службы и нажимаю их вручную?
Если вы хотите увидеть соответствующий код node.js, который получает ошибки, не стесняйтесь исследовать mongodb и запросить, потому что мое использование похоже на их примеры.