Node.js 节点正在缓存我的函数结果,只有重新加载/重新启动有帮助

Node.js 节点正在缓存我的函数结果,只有重新加载/重新启动有帮助,node.js,Node.js,我试图在每次有人点击特定路线时返回一个具有硬件传感器值的对象。但是,在节点启动/重新加载后,第一个请求的对象存储在内存中 如上所述,我尝试删除该特定模块的缓存。然而,在我的情况下,似乎什么也没做 ///controllers/mqController.js 常量getGas=()=>{ 返回新承诺((解决、拒绝)=>{ const gas=msa.open(编号(process.env.SPI_通道),{speedHz:20000},err=>{ 如果(错误)拒绝(错误); 其他的 决心( 新承

我试图在每次有人点击特定路线时返回一个具有硬件传感器值的对象。但是,在节点启动/重新加载后,第一个请求的对象存储在内存中

如上所述,我尝试删除该特定模块的缓存。然而,在我的情况下,似乎什么也没做

///controllers/mqController.js
常量getGas=()=>{
返回新承诺((解决、拒绝)=>{
const gas=msa.open(编号(process.env.SPI_通道),{speedHz:20000},err=>{
如果(错误)拒绝(错误);
其他的
决心(
新承诺((rslv、rjct)=>{
气体读取((错误,可读)=>{
如果(错误)rjct(错误);
else rslv(可读);
});
}),
);
});
});
};
exports.mqreads=getGas()
。然后(res=>{
返回{
液化石油气:mQGetGasPercentage(res.value,测量数据gasLPG),
co:mQGetGasPercentage(res.value,measureData.gasCO),
烟雾:mqGetGassPercentage(res.value,measureData.gasSMOKE),
rawDbg:res.rawValue,
};
})
.catch(err=>console.error(err));
这就是后来在路线中的称呼

//控制器/readingcontroller.js
const{mqReadings}=require('./mqController');
const AppError=require('../utils/AppError');
exports.getAllReads=async(请求、恢复、下一步)=>{
试一试{
const mq=等待mqreads;
res.status(200).json({
状态:“成功”,
mq,
});
next();
}捕获(e){
返回新的外观(例如消息“500”);
}
};
因此,每次加载/重新加载都会得到正确的预期结果,例如:

{
  "lpg": 2.28348626551635,
  "co": 2.292945532477404,
  "smoke": 2.291557122676283,
  "rawDbg": 153
}

然而,我后来注意到,无论发生什么事情,它们都不会改变。也许我在这里遗漏了一些东西,在调试器中找不到任何特定的东西,除了它已经在每个require得到缓存的步骤之一中向我显示。

controllers/readingcontroller.js
中,当您
require('./mqController')
mqreads
被分配了
getGas()返回的承诺

如果需要再次调用
getGas()
,则需要导出一个调用该函数的函数:

exports.mqReadings = () => getGas()
  .then(res => {
    return {
      lpg: mQGetGasPercentage(res.value, measureData.gasLPG),
      co: mQGetGasPercentage(res.value, measureData.gasCO),
      smoke: mQGetGasPercentage(res.value, measureData.gasSMOKE),
      rawDbg: res.rawValue,
    };
  })
  .catch(err => console.error(err));

然后将
getAllReadings()
更新为
await mqReadings()

尝试在响应中设置一个无缓存头,如下所述:谢谢,但这与浏览器缓存有关,与节点模块缓存无关。非常感谢,我错过了这个逻辑,觉得自己很傻。
exports.mqReadings = () => getGas()
  .then(res => {
    return {
      lpg: mQGetGasPercentage(res.value, measureData.gasLPG),
      co: mQGetGasPercentage(res.value, measureData.gasCO),
      smoke: mQGetGasPercentage(res.value, measureData.gasSMOKE),
      rawDbg: res.rawValue,
    };
  })
  .catch(err => console.error(err));