node.js fs.rename() 错误 enoent
Posted
技术标签:
【中文标题】node.js fs.rename() 错误 enoent【英文标题】:node.js fs.rename() error enoent 【发布时间】:2012-10-19 09:10:53 【问题描述】:将文件上传到我的服务器后,我尝试将其移动到另一个文件夹(同一磁盘),但出现错误
[Error:ENOENT,rename 'F\myproject\1b231234nsdifhoi2323']
errno:34,
code:ENOENT,
path:'F\\myproject\\1b231234nsdifhoi2323'
在 Windows 上使用并使用
app.use(express.bodyParser(
uploadDir:'./Temp'
));
这是我的重命名代码
exports.upload = function(req, res,next)
console.log( req.body);
console.log(req.files);
var tmp_path = req.files.product_video.path;
var target_path = '\\Video\\' + req.files.product_video.name;
console.log(tmp_path); // Temp\1b231234nsdifhoi2323
console.log(target_path); // \Video\name
fs.rename(tmp_path, target_path, function(err)
if (err)
console.log(err)
;
fs.unlink(tmp_path, function()
if (err)
console.log(err)
else
res.send('File uploaded to: ' + target_path + ' - ' + req.files.product_video.size + ' bytes');
);
);
;
我好像弄错了路径,但我无法弄清楚!
【问题讨论】:
您在 Windows 上吗?如果是这样,您应该在路径名的驱动器部分中包含冒号 (:
),即 F:
。
但 Temp 和 Video 文件夹在同一个磁盘中
好吧,我编辑了 var target_path = 'F:\\myproject\\Video\\' + req.files.product_video.name;它比x有效
为了将来参考,您可以在此处查找 E*** 错误代码:github.com/joyent/node/blob/master/deps/uv/include/uv.h
@paynestrike,最好使用 var target_path = __dirname + "\\Video" + req.files.product_video.name (如果您的文件在 F:\myproject 中)
【参考方案1】:
您正在访问一个不存在的文件 - 因为路径不存在。
尝试编辑路径:
将"F\myproject\1b2"
更改为"F:/myproject/1b2"
或"F:\myproject\1b2"
如果不起作用,请使用:(__dirname 将创建一个相对于脚本的路径)__dirname + "/../../myproject\1b2"
用于调试:
试试read
这个文件(如果你得到同样的错误——这意味着路径不好,rename
很好)
【讨论】:
床?这是一个错误的错字吗? :D 已修复.. 是的,这是一个错字【参考方案2】:为避免斜线问题,您可以使用path.sep
,以便它根据操作系统处理斜线\
。
【讨论】:
以上是关于node.js fs.rename() 错误 enoent的主要内容,如果未能解决你的问题,请参考以下文章
Node.js——fs模块(文件系统),创建删除目录(文件),读取写入文件流
未安装 Node.js。在 Mac 上将 Amplify AWS 添加到 Android Studio
javascript 基本Node.js HTTP服务器 - 来自https://developer.mozilla.org/en-US/docs/Learn/Server-side/Node_ser