我有一个对象“房间”,我试图每隔10秒将其内容打印到一个文件“logging.json”。
true
第一次(10秒后)它工作,我的文件logging.json完成了。但是第二次调用该函数时,我的对象“rooms”的内容被删除,我获取的logging.json文件也是空的。
此外,我的程序的其余部分正确地使用这部分代码,所以我不认为它来自其他东西。
你能告诉我为什么我得到这个以及如何解决它?
编辑:当我尝试打印我的房间对象时,这就是我在控制台中得到的结果。
setTimeout(function(){
fs.writeFile('./logging.json',JSON.stringify(rooms,null,'\t'),function(err) {
if(err) return console.error(err);
console.log('done');
});
}, 10000);
另外,我不明白为什么服务器每10秒重新启动一次,这不应该。
答案 0 :(得分:2)
当您正在使用nodemon
时,您需要告诉nodemon
忽略您正在编写的文件,否则您的整个应用都将重新启动每次更新文件。这可以通过命令行完成,如下所示:
nodemon --ignore logging.json app.js
或者通过更新nodemon
配置。
如果您想每10秒运行一次该功能,则需要使用setInterval
而不是setTimeout
。 setTimeout
只能在10秒内运行一次。
每10秒替换文件中的所有内容:
const fs = require('fs')
let count = 0
setInterval(function() {
fs.writeFile('./test.txt', count, function (err) {
if(err) {
console.log(err)
}
})
}, 10000)
每隔10秒附加一次文件:
const fs = require('fs')
let count = 0
setInterval(function() {
const text = count++ + '\n'
fs.appendFile('./test.txt', text, function (err) {
if(err) {
console.log(err)
}
})
}, 10000)