我一直在尝试将插件实现到我的hapi服务器中,尽管我一直在尝试的不起作用。我使用函数server.pack.register()
虽然这似乎给了我一个错误:
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 :(得分:1)
我不知道Hapi中的server.pack
是什么,但我认为这个问题比语法错误更多。
尝试使用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。