как сохранить работоспособность hapi, если удаленный сервер недоступен - PullRequest
0 голосов
/ 04 декабря 2018

Обновление: Ну да, это было так же просто, как завершение вызова Wreck.get() в блоке try… catch.Никаких дополнительных действий по этому вопросу не требуется.

Я запрашиваю данные с удаленного сервера, используя следующий простой код

const {res, payload} =  await Wreck.get(uri);

Если по какой-либо причине удаленный сервер недоступен (сетьвниз, кто-то отключил маршрутизатор, что угодно), hapijs (версия 17) выходит с фатальной ошибкой

{ Error: getaddrinfo ENOTFOUND remote.org remote.org:443
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'remote.org',
host: 'remote.org',
port: 443,
trace:
[ { method: 'GET',
    url:
        'https://remote.org/api/…' } ],
isBoom: true,
isServer: true,
data: null,
output:
{ statusCode: 502,
    payload:
    { message:
        'Client request error: getaddrinfo ENOTFOUND remote.org remote.org:443',
        statusCode: 502,
        error: 'Bad Gateway' },
    headers: {} },
reformat: [Function] }

Я бы предпочел, чтобы сообщение об ошибке возвращалось, но hapijs продолжает работать.Как мне это сделать?

1 Ответ

0 голосов
/ 05 декабря 2018

Добавление блока try {} catch(err) {} вокруг оператора Wreck.get() решило проблему.

...