我正在使用文件存储JSON数据。我的模块对文件进行CRUD操作,我使用require()
加载json,而不是fs.readFile()
。问题是,如果使用fs.unlink()
删除文件,则使用require
再次调用该文件仍会加载刚刚删除的文件。我有点迷失如何解决这个问题,可能是#ravack-collection?
示例:
fs.writeFile('foo.json', JSON.stringify({foo:"bar"}), function(){
var j = require('./foo.json')
fs.unlink('./foo.json', function(){
console.log('File deleted')
var j = require('./foo.json')
console.log(j)
})
})
答案 0 :(得分:2)
使用require
加载模块时,Node.js会在内部缓存已加载的模块,以便后续对require
的调用不需要再次访问驱动器。使用.json
加载时,require
文件也是如此。
这就是为什么你的文件仍然被“加载”的原因,尽管你删除了它。
此问题的解决方案是使用该函数加载适合您的文件,您已经提到过:fs.readFile()
。一旦你使用它,一切都会按预期工作。