在模块中提供hapi插件

时间:2016-03-11 14:40:17

标签: javascript node.js module hapijs

我正在重构我的Hapi服务器以使用可重用模块而不是在我的路由处理程序中执行逻辑。我在Hapi服务器上注册了一个用于MongoDB连接池的插件,我希望能够在这些模块中访问它。有没有办法导出服务器对象本身,还是我需要重写我的模块接受请求对象作为参数?我正在使用节点0.12.12和Hapi 8.4.0。

我已经在我的服务器定义的文件中尝试了module.exports = server;,然后要求来自不同文件的服务器对象(包括var server = require('../index.js').server;var server = require('../index.js')(server);,但我得到了错误或undefined

我能找到答案的最接近的事情是几年前的这个问题,在旧版本的Hapi上:https://github.com/hapijs/hapi/issues/1260 - 但看起来这从未真正得到解决。

1 个答案:

答案 0 :(得分:-1)

嗯,我是个白痴,但也许这会帮助其他人:

根据节点文档,似乎无法在回调中调用module.exports。所以我把这个语句移到了index.js的底部:

module.exports.server = server

然后在我的其他模块中,称为:

var server = require('../index.js');

并且能够以server.server.plugins

的形式访问插件内容

HTH