gpt4 book ai didi

javascript - 在 NODE.JS 中重新加载变量值

转载 作者:搜寻专家 更新时间:2023-11-01 00:25:20 25 4
gpt4 key购买 nike

我终于意识到我需要在这个问题上使用“StackOverflow”大炮。这是我的代码,因为此修复程序继续躲避我

var express = require('express'),
fs = require('fs'),
http = require('http');

var ppm = JSON.parse(fs.readFileSync('./data/ppm.json', 'utf8'));

var timestamp = {"timestamp" : ppm.RTPPMDataMsgV1.timestamp };

var app = express()
.use(express.bodyParser())
.use(express.static('public'));

app.all('/', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});

app.get('/ppm/timestamp', function (req, res) {
res.send(timestamp);
});

app.get('/*', function (req, res) {
res.json(404, {status: 'not found'});
});

http.createServer(app).listen(3000, function () {

setInterval(function(){
var ppm = JSON.parse(fs.readFileSync('./data/ppm.json', 'utf8'));
var timestamp = {"timestamp" : ppm.RTPPMDataMsgV1.timestamp };
console.log("File changed");
}, 30000);

console.log("Server ready at http://localhost:3000");
});

这是最终代码的精简版,但 app.get 不仅仅是时间戳。

ppm.json 文件由一个单独的 Node 程序每 30 秒更新一次,但我可以让该 Node 使用新文件的唯一方法是停止并启动服务器,这是 Not Acceptable 。

我曾经做过 ppm = require('./data/ppm.json) 但由于缓存而删除了它并转移到这种加载 JSON 的新方法但没有成功。我怀疑该应用程序也在缓存,因此......再次......我需要重新启动服务器以获取新值

如何在不重新加载服务器的情况下每 30 秒重新加载一次 PPM 的值(或者甚至在使用 fs.watchfile 更改文件 ppm.json 时)。

提前致谢

最佳答案

setInterval 回调中删除 pmm 之前的单词 var。您创建了一个本地 pmm 变量,而不是在您想要的范围内修改 pmm 变量。

您还应该避免 fs.readFile 的同步版本,以便您的服务器可以在 IO 发生时响应请求。

关于javascript - 在 NODE.JS 中重新加载变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21735482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com