【问题标题】:node.js path.rename() throws error despite working correctly尽管工作正常,node.js path.rename() 仍会引发错误
【发布时间】:2015-11-18 12:34:40
【问题描述】:

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

这是代码:

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)

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

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

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

    【讨论】:

    • 不使用 fs.watch。但我发现寻找双重电话的问题。我在输入字段中的任何不允许的输入上调用 e.preventDefault 。这会阻止表单在按 Enter 时提交。但是当我在 Enter 上手动触发提交时,它也绕过了导致双重提交的 e.preventDefault 调用。
    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2017-01-04
    相关资源
    最近更新 更多