如果远程服务器不可用,如何保持“ hapi”运行

时间:2018-12-04 17:14:46

标签: hapijs

更新:哦,就像将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 :(得分:0)

try {} catch(err) {}语句周围添加Wreck.get()块解决了该问题。