Hapi.js Catbox Redis返回“ server.cache不是函数”

tra

所以我想99%肯定我只是在搞砸一些愚蠢的东西。

我正在尝试设置catbox以将对象缓存到redis。我已经启动并运行了Redis,可以用RDM(类似于redis的sql pro实用程序)来实现它,但是Hapi没有合​​作。

我像这样注册redis catbox缓存:

const server = new Hapi.Server({
cache: [
{
  name: 'redisCache',
  engine: require('catbox-redis'),
  host: 'redis',
  partition: 'cache',
  password: 'devpassword'
}
]
});

我正在server.js中执行此操作。在这段代码之后,我继续注册更多插件并启动服务器。我还在文件末尾导出服务器

module.exports = server;

然后,在我的路线文件中,我试图像这样设置测试路线:

{
    method: 'GET',
    path: '/cacheSet/{key}/{value}',
    config: { auth: false },
    handler: function(req, res) {
        const testCache = server.cache({
            cache: 'redisCache',
            expireIn: 1000
        });

        testCache.set(req.params.key, req.params.value, 1000, function(e) {
            console.log(e);
            res(Boom.create(e.http_code, e.message));
         })
        res(req.params.key + " " + req.params.value);
    }
},

注意:我的路由在一个外部文件中,并导入到我在其中注册它们的server.js中。

如果我注释掉了该路由上的所有缓存内容,则该路由可以正常运行并返回我的参数。

如果我用缓存的东西来运行它,起初我会看到“服务器未定义”。所以我加了

const server                        = require('./../server.js');

导入服务器。

现在,当我运行此命令时,出现“ server.cache不是函数”和500错误。

我不明白我在做什么错。我的猜测是我要导入服务器,但也许它是未设置所有配置的对象,因此它无法使用.cache方法。但是,这似乎是错误的,因为.cache应该始终是具有默认内存缓存的默认方法,因此,即使我的缓存注册尚未处于活动状态,server.cache在理论上也应该是一种方法。

我知道这一定是我搞砸的基本知识,但是那又是什么呢?

tra

我是对的。我当时在做一些愚蠢的事情。这与我导出服务器的方式有关。我修改了结构,以完成最初的服务器创建并使其更具模块化。现在,我只是像这样简单地导出服务器:

'use strict';
const Hapi       = require('hapi');
const server = new Hapi.Server({
  cache: [
    {
      name: 'redisCache',
      engine: require('catbox-redis'),
      host: 'redis',
      partition: 'cache',
      password: 'devpassword'
    }
  ]
});
module.exports = server;

然后,将其导入到我的主服务器文件(现在为index.js,以前为server.js)中,一切运行正常。我也可以将其导入任何其他文件(在本例中为我的路由文件),并访问服务器以获取适当的方法。

Redis高兴地存储密钥,而Hapi高兴地没有给我错误。

离开这里,以防其他人遇到这种愚蠢的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hapi.js Catbox Redis返回“ server.cache不是函数”

来自分类Dev

HAPI Catbox无法连接到Redis服务器

来自分类Dev

TypeError:server.views不是hapi.js中的函数

来自分类Dev

hapi.js实验室测试,server.js始终返回404状态

来自分类Dev

hapi js是否使用redis共享会话?

来自分类Dev

与Hapi.JS API-Server并行的Kue UI(Express)

来自分类Dev

如何用hapi js返回mongodb查询结果

来自分类Dev

hapi.js入门

来自分类Dev

JS函数返回函数而不是值

来自分类Dev

为什么Hapi.js POST处理程序返回空的有效载荷?

来自分类Dev

JS,函数返回undefined而不是true或false

来自分类Dev

Node.js返回不是函数

来自分类Dev

JS回调返回undefined不是函数

来自分类Dev

hapi 的 server.inject 生产安全吗?

来自分类Dev

如何将 mongodb 信息返回到 hapi.js 路由处理程序中的浏览器?

来自分类Dev

不允许验证-HAPI JS

来自分类Dev

hapi.js处理错误的最佳方法

来自分类Dev

Hapi js导出服务器变量

来自分类Dev

Hapi JS post 请求负载解析问题

来自分类Dev

Hapi不会从Boom错误返回数据属性

来自分类Dev

HAPI JS Node js创建https服务器

来自分类Dev

节点js Hapi js和heroku如何处理https

来自分类Dev

Hapi JS 路由处理程序中的 JS 变量范围

来自分类Dev

hapi-auth-jwt2的作品在hapi.js应用中不起作用?

来自分类Dev

如何使用Server.inject注入模拟测试hapi

来自分类Dev

Hapi服务器方法与server.app.doSomething

来自分类Dev

在Hapi.js Restful API中了解请求IP

来自分类Dev

Hapi.js子域路由到插件

来自分类Dev

hapi:包括一个js自定义库