2
我终于意识到我将需要在这一个大型的'StackOverflow'枪。这里是我的代码,此修复程序不断躲避我重新加载NODE.JS中的变量值
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文件每隔30秒由一个单独的节点程序更新,但唯一可以让此节点使用新文件的方式是停止并启动服务器,这是不可接受的。
我曾经做过ppm = require('./ data/ppm.json),但是由于缓存而删除了这个,并且移到了这个加载JSON的新方法,但没有成功。我怀疑应用程序也是缓存,因此..再次..我需要重新启动服务器以获取新值
我如何使PPM的值每30秒重新加载一次(或者甚至在更改到文件ppm.json通过使用fs.watchfile)而无需重新加载服务器。
在此先感谢
我所要做的就是放弃VAR ......当然,我曾尝试过,但显然不是。现在工作可爱。非常感谢 – MOLEDesign