尽管工作正常,node.js path.rename()仍会抛出错误

时间:2015-08-24 23:24:51

标签: node.js

我正在重命名文件并且正在获得一些奇怪的行为。它既可以工作又会引发错误。

这是代码:

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)

我不明白问题是什么。无论如何,该文件已重命名。 此外,如果将文件移动到另一个文件夹,也不会发生这种情况。

为什么会发生这种情况,我是否需要担心?

1 个答案:

答案 0 :(得分:0)

该函数被调用两次。这意味着它第二次被称为文件不再存在,导致'没有这样的文件或目录'。我注意到你正在使用Windows也可能是问题的一部分。您是否有机会使用fs.watch来调用此函数?您可能会在fs.watch under Windows duplicating events中看到继承问题。如果是这样,有一些example code可能对您有所帮助。