作者:桥之西海_744 | 来源:互联网 | 2023-02-07 16:35
这个错误究竟意味着什么?什么是"跨设备链接"?
在此libuv页面上提到它,但除了"不允许交叉设备链接"之外,它不提供任何详细信息.
1> robertklep..:
听起来你正在尝试跨"设备"(分区)边界重命名文件.
说这/tmp
是一个不同的分区/
.这意味着你不允许这样做:
fs.rename('/tmp/myfile.txt', '/myfile.txt', ...)
(同样适用于fs.renameSync()
,显然)
如果要这样做,则需要先将文件复制到新位置,然后删除旧文件.有一些模块,mv
可以帮助你.
在文件系统模块中使用** copyFile **和** unlink **的组合也可以解决问题。
@AmirSyafrudin是的,但是当我写这个答案时,`fs.copyFile`不存在:D
确实.只是想添加它,以防任何像我这样的新手偶然发现你的答案.:)
2> rsp..:
它用于Linux上的EXDEV:
请参见手册man rename
页:
http://man7.org/linux/man-pages/man2/rename.2.html
EXDEV oldpath和newpath不在同一个挂载的文件系统上.(Linux允许文件系统在多个点安装,但rename()在不同的安装点上不起作用,即使两者都安装了相同的文件系统.)
ERROR_NOT_SAME_DEVICE
Windows上有此错误,请参阅:
https://github.com/libuv/libuv/blob/v1.x/src/win/error.c#L166
有关详情,请参阅:
http://errorco.de/win32/winerror-h/error_not_same_device/0x80070011/
winerror.h 0x80070011
#define ERROR_NOT_SAME_DEVICE
系统无法将文件移动到其他磁盘驱动器.