我正在重构我的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 - 但看起来这从未真正得到解决。
答案 0 :(得分:-1)
嗯,我是个白痴,但也许这会帮助其他人:
根据节点文档,似乎无法在回调中调用module.exports。所以我把这个语句移到了index.js的底部:
module.exports.server = server
然后在我的其他模块中,称为:
var server = require('../index.js');
并且能够以server.server.plugins
HTH