Javascript 当文件内容更改时,使用node.js将更新的内容发送给用户
我正在尝试获取node.js脚本,以便在文件内容发生更改时显示文本文件的内容 以下是到目前为止我得到的信息:Javascript 当文件内容更改时,使用node.js将更新的内容发送给用户,javascript,node.js,Javascript,Node.js,我正在尝试获取node.js脚本,以便在文件内容发生更改时显示文本文件的内容 以下是到目前为止我得到的信息: var http = require('http'); var fs = require("fs"); http.createServer(function (req, res) { fs.watch("/Users/{username}/Desktop/data.txt",function(event,file) { fs.readFile('/Users/{userna
var http = require('http');
var fs = require("fs");
http.createServer(function (req, res) {
fs.watch("/Users/{username}/Desktop/data.txt",function(event,file) {
fs.readFile('/Users/{username}/Desktop/data.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(data);
//^ this doesn't work, just returns a blank page
});
});
}).listen(1337, '0.0.0.0');
不幸的是,它只显示一个空白页。我做错了什么…?很可能是任何进程都会以写模式打开文件,然后重新编写,从而更改文件。当这种情况发生时,您将在另一个进程打开该文件后立即收到通知,此时该文件将为空,因为它尚未写入 最好设置一个每次收到更改通知时都会触发的超时,即每次收到暂停超时的通知时,清除超时并启动一个新的超时,并且仅在超时完成时读取文件。如何:
var http = require('http');
var fs = require("fs");
function dataHandler(data) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(data);
}
http.createServer(function (req, res) {
fs.watch("/Users/{username}/Desktop/data.txt",function(event,file) {
fs.readFile('/Users/{username}/Desktop/data.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
dataHandler(data);
});
});
}).listen(1337, '0.0.0.0');
默认情况下不会执行此操作。你可能想看一看。没问题,很高兴我能提供帮助。@JackGreenhill想知道你做了哪些不同的事情,以及如何才能超出范围?