Javascript hapijs-在插件完成注册之前无法启动服务器
所以我有Hapi(v17.5.1),当我有插件阵列时Javascript hapijs-在插件完成注册之前无法启动服务器,javascript,node.js,hapijs,hapi-swagger,Javascript,Node.js,Hapijs,Hapi Swagger,所以我有Hapi(v17.5.1),当我有插件阵列时 [ { plugin: good, options: { reporters: { errorReporter: [ { module: 'good-squeeze', name: 'Squeeze', args: [{ error: '*' }], }, { module: 'good-console
[
{
plugin: good,
options: {
reporters: {
errorReporter: [
{
module: 'good-squeeze',
name: 'Squeeze',
args: [{ error: '*' }],
}, {
module: 'good-console',
},
'stderr',
],
infoReporter: [
{
module: 'good-squeeze',
name: 'Squeeze',
args: [{ log: '*', response: '*' }],
}, {
module: 'good-console',
},
'stdout',
],
},
}
]
在下一个示例中,我们将其保存在变量goodPlugin
中
也就是说,只有使用好的插件,它才能正常工作,但当我尝试添加Inactive、Vision或Hapi Swigger时,它会出现错误,即插件注册完成之前,无法启动服务器
例如:
const HapiSwagger = require('hapi-swagger');
const Inert = require('inert');
const Vision = require('vision');
const Pack = require('../package');
module.exports = [
Inert,
Vision,
// goodPlugin,
{
plugin: HapiSwagger,
options: {
info: {
title: Pack.description,
version: Pack.version,
},
},
}
];
我哪里做错了?我甚至只在开发模式打开时才尝试添加这个,但它给了我同样的错误。注册插件时是否使用wait
?根据建议,插件注册部分应如下所示:
const init = async () => {
await server.register({
plugin: require('hapi-pino')
});
await server.start();
console.log(`Server running at: ${server.info.uri}`);
};
init();
在Hapi 17中,注册插件的调用返回一个承诺,您是否正确处理了这个问题?是的,这就是答案。基本上我使用的是wait for register函数,但是对server.register的调用本身就在一个异步函数中,我在没有wait的情况下调用这个函数。是这样的吗async
函数在调用时必须具有await
?async
函数被声明,以便您可以在它们内部使用await
。异步函数本身不需要使用wait
调用。在这种情况下,异步函数init
允许在其内部使用await
,并使用await
确保在调用server.start
之前完成server.register
。