呃。在node.js中重命名文件时ENOENT

时间:2015-01-29 18:07:26

标签: node.js

我正在尝试在我的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目录的内容显示该文件在那里。有什么问题?

1 个答案:

答案 0 :(得分:1)

创建,移动或重命名文件的fs.rename等FS方法期望路径中的任何目录都已存在。当他们不这样做时,你会得到一个ENOENT。因为你经常所说的“制作这个文件 - 以及我为它指定的路径中的任何目录”你可能要考虑使用一个NPM库来抽象使用处理这些事情的方法访问fs。

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