Javascript 显示来自HTTP请求hapi.js 17.2.0的响应
我试图使用新的HapiJS 17显示一个页面,但它依赖于http请求。因此,基本上我使用一个RESTAPI,然后将其返回到新的响应工具包(也称为“h toolkit”),但它在控制台中给出了错误 错误:处理程序方法未返回值、承诺或引发错误 它还提供了一个浏览器错误 发生内部服务器错误 下面是我的代码(为了简单起见,我尽量简化代码,而不处理错误等)Javascript 显示来自HTTP请求hapi.js 17.2.0的响应,javascript,node.js,express,promise,hapijs,Javascript,Node.js,Express,Promise,Hapijs,我试图使用新的HapiJS 17显示一个页面,但它依赖于http请求。因此,基本上我使用一个RESTAPI,然后将其返回到新的响应工具包(也称为“h toolkit”),但它在控制台中给出了错误 错误:处理程序方法未返回值、承诺或引发错误 它还提供了一个浏览器错误 发生内部服务器错误 下面是我的代码(为了简单起见,我尽量简化代码,而不处理错误等) 仅供参考,同样的东西在Express中也能正常工作,没有任何问题(我猜它也适用于HapiJS 16 我在HapiJS 16中找到了这个示例 该错误建
仅供参考,同样的东西在Express中也能正常工作,没有任何问题(我猜它也适用于HapiJS 16 我在HapiJS 16中找到了这个示例
该错误建议您返回h的承诺,如下所示:
server.route({
method: 'GET',
path:'/a',
handler: (req, h) =>
new Promise(
(resolve,reject)=>
Request
.get('https://httpbin.org/ip')
.on('data', function(data) {
resolve(h.response('data:' + data));
})
)
});
这仅适用于Hapi.js 16 但是,根据以下说明,您不必归还任何东西,可以执行以下操作:
server.route({
method: 'GET',
path:'/a',
handler: (req, res) =>
Request
.get('https://httpbin.org/ip')
.on('data', function(data) {
res('data:' + data);
})
});
该错误建议您返回h的承诺。如下所示:
server.route({
method: 'GET',
path:'/a',
handler: (req, h) =>
new Promise(
(resolve,reject)=>
Request
.get('https://httpbin.org/ip')
.on('data', function(data) {
resolve(h.response('data:' + data));
})
)
});
这仅适用于Hapi.js 16 但是,根据以下说明,您不必归还任何东西,可以执行以下操作:
server.route({
method: 'GET',
path:'/a',
handler: (req, res) =>
Request
.get('https://httpbin.org/ip')
.on('data', function(data) {
res('data:' + data);
})
});
因为,hapijsv17.x是基于async/await的。 使用
const Request=require('Request-promise');
请求承诺:
以下代码更改:
server.route({
method: 'GET',
path:'/a',
handler: async function(req, h) {
let response = await Request.get('https://httpbin.org/ip');
return response;
}
});
因为,hapijsv17.x是基于async/await的。 使用
const Request=require('Request-promise');
请求承诺:
以下代码更改:
server.route({
method: 'GET',
path:'/a',
handler: async function(req, h) {
let response = await Request.get('https://httpbin.org/ip');
return response;
}
});
它给出了一个错误:)SyntaxError:await仅在async functionAppend'async'和functionCopy paste中有效您的答案仍然给出了错误。SyntaxError:意外标记)。当我试图编辑代码以适应您所说的内容时,它给出了错误:流必须有一个流2可读接口它在问题中使用“请求承诺”而不是“请求”链接:它给出了一个错误:)SyntaxError:Wait仅在async functionAppend“async”和functionCopy paste中有效您的答案仍然给出了错误。SyntaxError:意外标记)。当我试图编辑代码以适应您所说的内容时,它给出了错误:Stream必须有一个streams2可读接口,它在问题中使用“请求承诺”而不是“请求”链接:两个答案都给出了错误。第一个给出Debug:internal,implementation,error ReferenceError:promise未定义。第二个给出TypeError:res不是function@iEmad将承诺更改为承诺我如何在我的职能范围内调整承诺?因为我想写一个函数从处理程序调用它。对于重用来说,答案给出了错误。第一个给出Debug:internal,implementation,error ReferenceError:promise未定义。第二个给出TypeError:res不是function@iEmad将承诺更改为承诺我如何在我的职能范围内调整承诺?因为我想写一个函数从处理程序调用它。重复使用