Как правильно зарегистрировать плагины в Hapi.js

1

Я последовал за официальным сайтом hapi и попробовал простой сервер, но не смог: я не могу зарегистрировать плагины,

var Hapi = require('hapi');

var server = new Hapi.Server();

server.connection({port: 4004});

server.register([require('inert'), require('vision')], (err) => {
    if (err) {
        throw err;
    }

    server.start(err => {
        console.log('server started');
    });
});

Это бросает ошибку:

/Users/apple/Documents/node_projects/hapijon/testjon/ch4_routes_and_handlers/node_modules/hapi/lib/plugin.js:219
        if (plugin.register.register) {                             // Required plugin
                            ^

TypeError: Cannot read property 'register' of undefined
    at module.exports.internals.Server.internals.Plugin.register (/Users/apple/Documents/node_projects/hapijon/testjon/ch4_routes_and_handlers/node_modules/hapi/lib/plugin.js:219:29)
    at Object.<anonymous> (/Users/apple/Documents/node_projects/hapijon/testjon/ch4_routes_and_handlers/tess.js:7:8)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

Вот мой package.json:

  "dependencies": {
    "accept": "^2.1.4",
    "hapi": "^14.2.0",
    "inert": "^5.0.1",
    "iron": "^5.0.4",
    "vision": "^5.3.0",
    "wreck": "^14.0.2"
  }
  • 0
    Ответ на этот вопрос к вашему удовлетворению? Если да, то можете ли вы отметить один из ответов ниже как принятый ответ? Благодарю.
Теги:
plugins
hapijs

2 ответа

1
Лучший ответ

Согласно v17 документам на https://hapijs.com/api#server.register():

await server.register(plugins, [options])

Регистрирует плагин, где:

  • плагины - один или массив:

    • объект плагина.
    • объект со следующим:
      • plugin - объект плагина.
      • options - (необязательные) параметры, переданные плагину во время регистрации.
      • once, routes - (необязательные) параметры регистрации, зависящие от плагина, как определено ниже.
  • опции - (необязательные) параметры регистрации (отличные от параметров, переданных функции регистрации):

    • once - если true, последующие регистрации одного и того же плагина пропускаются без ошибок. Нельзя использовать с плагинами. По умолчанию false. Если не установлено значение true, ошибка будет сброшена во второй раз, когда плагин зарегистрирован на сервере.
    • routes - модификаторы, применяемые к каждому маршруту, добавленному плагином:
      • prefix - строка, добавленная как префикс для любого маршрута маршрута (должна начинаться с '/'). Если плагин регистрирует дочерний плагин, prefix передается дочернему элементу или добавляется перед префиксом для конкретного ребенка.
      • vhost - строка виртуального хоста (или массив строк), применяемая к каждому маршруту. Наружный наиболее vhost перекрывает любую вложенную конфигурацию.

Возвращаемое значение: нет.

Объект plugin object - это объект со следующими свойствами:

  • register - (требуется) функция регистрации с функцией async function(server, options) подписи async function(server, options) где:

    • server - the server object with a plugin-specific сервером.realm '.
    • options - любые параметры, переданные плагину во время регистрации через server.register().
  • name - (обязательно) строка имени плагина. Имя используется как уникальный ключ. Опубликованные плагины (например, опубликованные в реестре npm) должны использовать то же имя, что и поле имени в файле 'package.json'. Имена должны быть уникальными в каждом приложении.

  • version - (необязательно) версия версии плагина. Версия используется только информативно, чтобы другие плагины могли узнать загруженные версии. Версия должна быть такой же, как и в файле plugin 'package.json'.

  • multiple - (необязательно), если true, позволяет плагину регистрироваться несколько раз с тем же сервером. По умолчанию false.

  • dependencies - (необязательно) строки или массива строк, указывающих зависимость плагина. То же, что и настройки зависимостей через server.dependency().

  • once - (необязательно), если true, будет регистрировать только один плагин на сервере. Если установлено, переопределяет параметр once передается server.register(). По умолчанию не отменяется.

Итак, для вашего использования попробуйте:

const Inert = require('inert');
const Vision = require('vision');
await server.register([Inert.plugin, Vision.plugin]);
0

Я бы повредил версию hapi до последней версии, версии этих 2 плагинов, похоже, работают только с последней версией hapi.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню