nodejs require()来自文件垃圾收集的json

时间:2014-01-10 22:00:32

标签: node.js garbage-collection

我正在使用文件存储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)
    })
})

1 个答案:

答案 0 :(得分:2)

使用require加载模块时,Node.js会在内部缓存已加载的模块,以便后续对require的调用不需要再次访问驱动器。使用.json加载时,require文件也是如此。

这就是为什么你的文件仍然被“加载”的原因,尽管你删除了它。

此问题的解决方案是使用该函数加载适合您的文件,您已经提到过:fs.readFile()。一旦你使用它,一切都会按预期工作。