2017-01-28 3 views
0

Я пытался реализовать плагины на моем сервере hapi, хотя то, что я пытался, не работает. Я использую функцию server.pack.register() хотя это, кажется, дает мне ошибку:hapi - server.pack.register function not working

server.pack.register(plugin: plug, (err) => { 
        ^^^^^^ 
SyntaxError: missing) after argument list 
    at Object.exports.runInThisContext (vm.js:53:16) 
    at Module._compile (module.js:513:28) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
    at Function.Module._load (module.js:409:3) 
    at Function.Module.runMain (module.js:575:10) 
    at startup (node.js:160:18) 
    at node.js:449:3 

Вот мой полный код:

var Hapi = require('hapi'); 
var server = new Hapi.Server(); 
server.connection({ 
    host: 'localhost', 
    port: 3000 
}); 

server.route({ 
    method: 'GET', 
    path: '/users', 
    config: { 
    handler: function (request, reply) { 
     var result = {}; 
     setTimeout(function() { 
     result.users = [{ 
      first: 'Abraham Lincoln', 
      last: 'Lincoln' 
     }, { 
      first: 'Andrew', 
      last: 'Johnson' 
     }, { 
      first: 'Ulysses', 
      last: 'Grant' 
     }]; 
     result.time = Date.now() 

     return reply(result).header('X-Special-Header', 'MEAN Stack'); 
     }, 1); 
    } 
    } 
}) 

server.start((err) => { 
    if (err) { 
    throw err; 
    } 
    console.log('Server running at:', server.info.uri); 
}); 

var plug = { 
    register: function (plugin, options, next) { 
    plugin.route({ 
     method: 'GET', 
     path: options.prefix + '/view', 
     config: { 
     handler: function (request, reply) { 
      request.server.inject({ 
      url: '/users' 
      }, function (res) { 
      var users = res.result.users; 
      var view = '<!DOCTYPE html><html lang="en"><body><h1>User Output</h1><table>'; 

      for (var i = 0; i < users.length; i++) { 
       var user = users[i]; 
       view += '<tr><td>' + user.first + '</td><td>' + user.last + '</td></tr>'; 
      } 

      view += '</table></body></html>'; 
      reply(view); 
      }); 
     } 
     } 
    }); 

    next(); 
    } 
}; 
plug.register.attributes = { 
    name: 'viewer', 
    version: '1.0.0' 
}; 

// Doesn't work 
server.pack.register(plugin: plug, (err) => { 
    if (err) { 
     console.error('Failed to load plugin:', err); 
    } else { 
     server.start(); 
    } 
}); 

Я попытался с помощью server.register(), но это, кажется, не работает. Кто-нибудь есть решение того, что я делаю? Спасибо за помощь, очень ценим!

+0

Серверный пакет использовался в очень старых версиях hapi, вам нужно выполнить ответ @Ankh, но поместить вызов server.start внутри server.register callback и проверить наличие ошибок в обоих вызовах функций. –

+0

'server.pack.register ({plugin: plug}, (err) => { if (err) { console.error ('Не удалось загрузить плагин:', err); } else { server.start(); } }); ' –

ответ

1

Я не знаю, что server.pack в Hapi, однако я думаю, что проблема является синтаксической ошибкой больше всего на свете.

Попробуйте использовать server.register и удалить plugin:, так ..

server.register(plug, (err) => { 
    if (err) { 
     console.error('Failed to load plugin:', err); 
    } else { 
     server.start(err => { 
      if (err) 
       console.error('Failed to start server:', err); 
     }); 
    } 
}); 

Более подробную информацию о загрузке пользовательских плагинов можно найти на Hapi website.