我正在重命名文件并且正在获得一些奇怪的行为。它既可以工作又会引发错误。
这是代码:
var fs = require('fs');
var file = {
rename: function(from, to){
fs.rename(from, to, function (err) {
if (err) throw err;
console.log("[i] Renamed " + from + " to " + to);
});
}
}
使用它时,我得到这个控制台输出:
main.js:1153 [i] Renamed E:\images\oldName.jpg to E:\images\newName.jpg
main.js:1152 Uncaught Error: ENOENT: no such file or directory, rename 'E:\images\oldName.jpg' -> 'E:\images\newName.jpg'
main.js:1152 (anonymous function)
fs.js:73 (anonymous function)
我不明白问题是什么。无论如何,该文件已重命名。 此外,如果将文件移动到另一个文件夹,也不会发生这种情况。
为什么会发生这种情况,我是否需要担心?
答案 0 :(得分:0)
该函数被调用两次。这意味着它第二次被称为文件不再存在,导致'没有这样的文件或目录'。我注意到你正在使用Windows也可能是问题的一部分。您是否有机会使用fs.watch来调用此函数?您可能会在fs.watch
under Windows duplicating events中看到继承问题。如果是这样,有一些example code可能对您有所帮助。