javascript 致命错误:v8::Object::SetInternalField()使用节点缓存的节点js上的内部字段超出界限

hkmswyz6  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(89)

我有一个API导出大量的数据,所以我尝试使用节点缓存,使API将更快,因为需要超过2分钟来获取数据,我是新的,所以我发现以下代码:注解:环境节点js/express

const NodeCache = require("node-cache");
const axios = require('axios');
const myCache = new NodeCache({stdTTL:100000})
 axios.get('http://localhost:5000/test/example)
        .then(function (response) {
            console.log(response)
            myCache.set("exampleCache",response,10000);
            res.send(response)

任何建议或推荐都会很棒!

hyrbngr7

hyrbngr71#

默认情况下,NodeCache模块会在保存对象之前克隆对象。
在您的示例中,您尝试缓存Axios响应对象,NodeCache无法克隆该对象(它是一个大而复杂的对象),因此您得到了错误。
相反,我建议克隆HTTP响应数据(response.data),它要小得多,也可以克隆整个Axios响应对象,如代码示例所示,但需要在NodeCache初始化期间设置选项{useClones: false},这样NodeCache将只保存对该对象的引用。

polhcujo

polhcujo2#

解决方案是使用缓冲区,但由于我们有很多数据,因此从数据库增加内存是解决方案

相关问题