Hapi,js - 在插件中包含插件的正确方法

时间:2016-07-26 13:54:41

标签: hapijs

我有这个Hapi.js服务器需要2个端点来执行Basic auth(使用hapi-auth-basic模块)。用于检查“用户名/密码”的每个端点逻辑是不同的,因此我将这两个东西分解为他们自己的插件。

目前这就是我注册插件的方式:

...

server.register([Basic,
...
    require('./auth/register-device'),
    require('./auth/sender'),
...
], (err) => {
 ....
 

虽然这有效,但我必须确保基本插件也正在注册。

我试图在我的插件寄存器方法中注册Basic插件(我已将其删除并移至上述文件中):

https://github.com/salty-pig/Salty-Pig/blob/master/auth/sender.js#L29,但是当我为两个插件执行此操作时,我收到了基本插件已经注册的错误。

我想我想知道这里的最佳做法应该是什么。在我的情况下,这是有效的,因为我没有分发这些“auth”插件。

问题2将是:如果我有一个插件我想进入一个npm模块,需要包含另一个插件,那么最佳实践是什么。

感谢

1 个答案:

答案 0 :(得分:2)

如果你正在编写一个依赖于其他插件的插件,你可以使用Hapi server.dependency API

exports.register = function (server, options, next) {
  server.dependency('hapi-auth-basic', function(server, next) {
    server.register([
      // register plugins that depend on hapi-auth-basic here
    ], (err) => {
    });
  });

  next();
};

您可以为server.dependency提供一个数组来指定多个依赖项。