这个问题是我在读取文件时遇到的,最初的代码是这样:
fs.readFile(folder + '/' + 'article.markdown', 'utf-8', function(err, content) {
// 处理 content
});
一切正常。
后来考虑到 markdown 还有很多种常用的后缀,比如 .md .mdown 等,以及以后可能会扩展到其他类型的文件,我把代码改成了这样:
fs.readdir(folder, function (err, files) {
for (var i = 0; i < files.length; i++) {
// 这样可以匹配所有 article.* 文件
if (/^article\..*$/.test(files[i])) {
fs.readFile(folder + '/' + files[i], 'utf-8', function (err, content) {
// 处理 content
}
}
return ;
}
});
结果表现出了一种奇怪的现象,用 vim 编辑 article.markdown 文件必须保存两次,才能在 node 里读到修改后的版本。我一开始还以为 Node 有什么我不知道的缓存机制,结果发现——大家思考一下吧,印象会比较深刻,原因发在回复里。