Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript hapijs-在插件完成注册之前无法启动服务器_Javascript_Node.js_Hapijs_Hapi Swagger - Fatal编程技术网

Javascript hapijs-在插件完成注册之前无法启动服务器

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

所以我有Hapi(v17.5.1),当我有插件阵列时

[
 {
  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