2016-07-26 9 views
0

私はこのhapi.jsサーバーにBasic認証(hapi-auth-basicモジュールを使用)を行うために2つのエンドポイントが必要です。 "ユーザー名/パスワード"をチェックするための各エンドポイントロジックが異なるので、私はこれら2つのものを自分のプラグインに分割しました。Hapi、js - プラグインをプラグインに組み込むための適切な方法

は現在、これは私がプラグインを登録しています方法です:

... 
 

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

これは動作しますが、私は基本的なプラグインも登録されていることを確認する必要があります。

私は(私は削除され、上記のファイルに移動したもの)、ここでメソッドを登録し、私のプラグインで基本的なプラグインを登録してみました:

https://github.com/salty-pig/Salty-Pig/blob/master/auth/sender.js#L29が、私は両方のプラグインのために、私はエラーを得たことをやったとき、 Basicプラグインが既に登録されていることを確認します。

私はここでベストプラクティスをどうすべきかと思います。私の場合は、これらの "auth"プラグインを配布していないので、これは動作します。

質問2:もし私がnpmモジュールにしたいプラグインを持っていたら、もう1つのプラグインを入れる必要がありました。そのためのベストプラクティスは何ですか?あなたが他のプラグインに依存してプラグインを作成している場合

おかげで

+0

これは、「基本プラグインも登録されていることを確認する必要があります」という意味ではわかりません。あなたはBasicとSenderの間に循環依存関係を作ろうとしているのですか? – estus

+0

そうは思わない。 SenderプラグインにはBasicプラグインが必要ですが、BasicプラグインにはSenderプラグインは必要ありません。私は基本的なプラグインを最初に登録する必要がある、送信者と登録デバイスのプラグインを動作させるために、基本プラグインを登録しておかなければなりませんでした。登録されている – lholmquist

+0

これはどのように適切に処理されるべきか知ることは興味深いでしょう。私の推測では、この動作は 'once'オプション[here](http://hapijs.com/api#serverregisterplugins-options-callback)、' once'と 'multiple'オプション[ここ](http: //hapijs.com/api#plugins)。 – estus

答えて

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を供給することができます。

関連する問題