使用 @hapi 21.3.2 实现缓存系统时出错

Error on implementing cache system with @hapi 21.3.2

提问人:Sylvain Jacot 提问时间:10/10/2023 最后编辑:Sylvain Jacot 更新时间:10/10/2023 访问量:38

问:

我被要求将我们的快乐服务器从版本 11 升级到最新版本 (21.3.2),这需要相当多的重构。 我已经设法让服务器运行,一切似乎都正常工作,但是当我尝试添加缓存系统时出现错误,我无法确定问题是否出在我的实现上。

我的环境 :

Node : 16.20.2
@hapi/hapi : 21.3.2
@hapi/catbox : 12.1.1
@hapi/catbox-memory : 6.0.1

这是我启动服务器时遇到的错误

 TypeError: refAnnotations.errors[cacheKey].push is not a function
    at exports.ValidationError.exports.error [as annotate] (...path/server/node_modules/@hapi/validate/lib/annotate.js:53:53)

这是我的服务器是如何初始化的,缓存系统是如何实现的:

const Hapi = require('@hapi/hapi');
const catboxMemory = require('@hapi/catbox-memory');
... rest of imports

const init = async () => {

    const server = Hapi.Server({
        host: 'localhost',
        port: config.port,
        cache:
        {
            name: 'memoryCache',
            provider: {
                constructor: catboxMemory
            }
        },
    });

    // Register the plugins
    await server.register([
        H2o2,
        Inert,
        Vision,
        dataPlugin,
        routesPlugin
    ]);

    const start = async () => {
         
                ... function that handle views

        await server.start();
    };

    start();
    console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {
    console.log(err);
    process.exit(1);
});

init();

我尝试了几种不同的语法,但快乐的文档对我没有多大帮助,我看不到我错过了什么。

节点.js 错误 快乐.js

评论


答:

0赞 Sylvain Jacot 10/10/2023 #1

我偶然在快乐的更新日志中找到了我问题的答案。 我不得不调用catBoxMemory的引擎。这是修复:

const server = Hapi.Server({
        host: 'localhost',
        port: config.port,
        cache:
        {
            name: 'memoryCache',
            provider: {
                constructor: catboxMemory.Engine
            }
        },
    });