【问题标题】:Err. ENOENT when renaming a file in node.js呃。在 node.js 中重命名文件时 ENOENT
【发布时间】:2015-01-30 02:22:11
【问题描述】:

我正在尝试在我的 node/express 应用程序中上传文件,但每次重命名文件时都会遇到 ENOENT 错误。我的代码是:

var tmp_path = req.files.file.path;
fs.rename(tmp_path, target_path, function (err) { 
    if(err) throw err;
    ...
    });

其中 target_path 将是目标路径。如果我这样做:

console.log('exists ' + fs.existsSync(tmp_path));

然后我的服务器日志:

exists true

此外,列出 tmp 目录的内容表明该文件在那里。有什么问题?

【问题讨论】:

  • target_path 是什么?请记住,fs 不会为您创建缺少的目录——如果找不到它们,您需要显式创建它们。
  • 是的,这就是问题所在。
  • 酷。如果你愿意,我会添加一个正式的答案,因为我记得我第一次遇到这种行为时也让我感到惊讶。

标签: node.js


【解决方案1】:

fs.rename 这样创建、移动或重命名文件的FS 方法要求路径中的任何目录已经存在。如果他们不这样做,你会得到一个 ENOENT。因为通常你的意思是“制作这个文件——以及我为它指定的路径中的任何目录”,你可能需要考虑使用一个 NPM 库,它通过处理这些事情的方法来抽象对 fs 的访问。

有很多选择。例如fs-extra 是经过更好测试的库之一。使用 fs-extra,您可以在该操作中使用 ensureDir 来首先创建目录结构(如果它尚不存在)。

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 2018-11-26
    • 2020-10-21
    • 2018-10-16
    • 2014-04-25
    • 2016-12-12
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多