Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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和Swagger?_Javascript_Node.js_Hapijs - Fatal编程技术网

Javascript 如何连接HapiJs和Swagger?

Javascript 如何连接HapiJs和Swagger?,javascript,node.js,hapijs,Javascript,Node.js,Hapijs,我正试图将Hapijs与Stragger项目联系起来。我目前正在使用这个软件包 这是我的密码: const Inert = require('inert'); const Vision = require('vision'); server.register([ Inert, Vision, { 'register': require('hapi-swagger'), 'options': options } ], (err) =

我正试图将Hapijs与Stragger项目联系起来。我目前正在使用这个软件包

这是我的密码:

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",

我已经实现了像这样的大摇大摆希望这将为你工作

'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')
  }
})

我已经为swagger插件注册创建了一个单独的文件。您可以添加类似的文件,只需传递服务器上下文即可注册插件

如果项目中没有使用Winston和Raven(Sentry.io),您可以删除它们

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;
// Add Swagger Plugin here
require('plugin-registration/hapi-swagger')(server);
您可以像这样从server.js文件注册插件

server.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;
// Add Swagger Plugin here
require('plugin-registration/hapi-swagger')(server);

因此,通过这种方式,只要你想阻止插件注册,就可以通过评论一行来实现。

请分享你的代码