2017-01-28 1 views
0

J'ai essayé d'implémenter des plugins dans mon serveur hapi bien que ce que j'ai essayé ne fonctionne pas. J'utilise la fonction server.pack.register() bien que cela semble me donner une erreur:hapi - la fonction server.pack.register ne fonctionne pas

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 

Voici mon code complet:

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(); 
    } 
}); 

J'ai essayé d'utiliser server.register() mais cela ne semble pas fonctionner non plus. Est-ce que quelqu'un a une solution à ce que je fais? Merci pour l'aide, très appréciée!

+0

Le pack de serveur a été utilisé dans de très anciennes versions de hapi, vous devez suivre @Ankh answer mais placer l'appel server.start dans le rappel server.register et vérifier les erreurs des deux appels de fonction. –

+0

'server.pack.register ({plugin: enfichable}, (err) => { if (err) { console.error ('Impossible de charger le plugin:', err); } else { server.start() } }); –

Répondre

1

Je ne suis pas au courant de ce que server.pack est dans Hapi mais je pense que le problème est une erreur de syntaxe plus que tout.

Essayez d'utiliser server.register et enlever plugin:, donc ..

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

Plus d'informations sur les plugins de chargement personnalisés sont disponibles sur le Hapi website.