2017-11-15 5 views
0

私はHapijsを騒々しいプロジェクトに接続しようとしています。私は現在、ここでは、このパッケージにHapiJsとSwaggerの接続方法は?

Hapi Swagger

を使用していますことは、私のコードです:

const Inert = require('inert'); 
const Vision = require('vision'); 
server.register([ 
    Inert, 
    Vision, 
    { 
     'register': require('hapi-swagger'), 
     'options': options 
    } 
], (err) => { 
    server.start((err) => { 
     if (err) { 
      console.log(err); 
     } else { 
      console.log('Server running at:', server.info.uri); 
     } 
    }); 
}); 

私は

if (plugin.register.register) {        // Required plugin 
         ^

TypeError: Cannot read property 'register' of undefined 

依存関係

"hapi": "^16.6.2", 
"hapi-swagger": "^8.0.0", 
+0

コードを共有してください –

答えて

0

Iヘクタール、このエラーメッセージが表示されましたこの希望のように、あなたのためにうまくいくでしょう。

'use strict'; 

const HapiSwagger = require('hapi-swagger'); 
const Inert = require('inert'); 
const Vision = require('vision'); 
const Config = require('config'); 
const DatabaseSetting = Config.get('DatabaseSettings'); 

//Register Swagger 
const Pack = require('../package'); 

exports.register = (server, options,next) => { 
    server.register([ 
     Inert, 
     Vision, 
     { 
      'register': HapiSwagger, 
      'options': { 
       'info': { 
        'title': `API Documentation for ${DatabaseSetting.env} environment`, 
        'version': Pack.version, 
        //'description':'Please use "accept :application/vnd.easyme.version.v1+json" for api versioning' 
       }, 
       'schemes': ['http'], 
       'pathPrefixSize':2, 
       'basePath': '/', 
       documentationPath:'/doc', 
       debug:true 
      } 
     }], (err) => { 
     if (err) { 
      server.log(['error'], `hapi-swagger load error: ${err}`) 
     }else{ 
      server.log(['start'], 'hapi-swagger interface loaded') 
     } 
    }); 
    next(); 
}; 

exports.register.attributes = { 
    name: 'swagger-plugin' 
}; 

server.js上の私は登録をプラグイン闊歩ための別のファイルを作成したインポートファイルを持っており、この

// Register All Plugins 
server.register(Plugins, err => { 
    if (err) { 
    server.error(`Error while loading plugins : ${err}`) 
    } else { 
    server.log('info', 'Plugins Loaded') 
    } 
}) 
0

のように登録します。同様のファイルを追加して、プラグインを登録するためにサーバーコンテキストを渡すだけで済みます。

あなたのプロジェクトでそれらを使用していない場合は、WinstonとRaven(Sentry.io)を削除できます。あなたはこのようなあなたのserver.jsファイルからプラグインを登録することができますpackage.json

"hapi": "^16.6.2", 
"hapi-swagger": "^8.0.0", 
"inert": "^4.2.1", 
"vision": "^4.1.1", 

HAPI-swagger.js

/** 
* Embeds Hapi-Swagger plugin to the server 
*/ 

/* jslint node: true */ 
/* jshint esversion: 6 */ 

'use strict'; 

const Inert = require('inert'); 
const Vision = require('vision'); 
const Winston = require('logger/WinstonPlugin'); 
const Raven = require('errors/RavenPlugin'); 
const environment = require('config').environment; 
const port = require('config').port; 

const swaggerOptions = { 
    info: { 
     title: 'API Documentation - [' + environment + ':' + port + ']' 
    }, 
    tags: [{ 
     name: 'user', 
     description: 'Related to User Object' 
    }, { 
     name: 'email', 
     description: 'For verification of User Email' 
    }, { 
     name: 'session', 
     description: 'Session Management' 
    }, { 
     name: 'account', 
     description: 'User Account' 
    }], 
    jsonEditor: true, 
    grouping: 'tags', 
    securityDefinitions: { 
     Bearer: { 
      type: 'apiKey', 
      name: 'Authorization', 
      in: 'header', 
      "scopes": { 
       "write:pets": "modify pets in your account", 
       "read:pets": "read your pets" 
      } 
     } 
    } 
}; 

/** 
* Registers Swagger Plugin in Hapi Server object 
* @param {*} server - Hapi.Server 
*/ 
function RegisterSwaggerPlugin(server) { 

    if (!server) return; 

    server.register([Inert, Vision, 
     { 
      register: require('hapi-swagger'), 
      options: swaggerOptions 
     } 
    ], function (err) { 
     if (err) { 
      Winston.error(['error'], 'hapi-swagger load error: ' + err); 
      Raven(err); 

     } else { 
      Winston.debug('hapi-swagger interface loaded'); 
     } 
    }); 
} 

module.exports = RegisterSwaggerPlugin; 

から

スニペット。

server.jsは

// Add Swagger Plugin here 
require('plugin-registration/hapi-swagger')(server); 

だからこの方法はいつでもあなたは、単一の行をコメントにし、あなたがそれを行うだけでできるプラグインの登録をブロックしたいです。