在Debian上重命名文件Wheezy无法使用fs.rename或fs.renameSync。Node.JS fs.rename不起作用
这只发生在从/ tmp /移动到另一个位置的文件中。
报告的错误是:EXDEV,不允许跨设备链接。
在Debian上重命名文件Wheezy无法使用fs.rename或fs.renameSync。Node.JS fs.rename不起作用
这只发生在从/ tmp /移动到另一个位置的文件中。
报告的错误是:EXDEV,不允许跨设备链接。
Debian Wheezy默认使用tmpfs作为/ tmp文件夹。
这可以通过修改/ etc/default/rcS来关闭。
RAMTMP=yes
必须被设置为
RAMTMP=no
问题是Node fs.renameSync不能跨设备重命名,而不是某个特定的机器有不同的tmp设备。不要仅仅因为这个关闭RAMTMP。 (在当前的Debian上,Jessie RAMTMP不工作,/ tmp tmpfs通过systemd配置。)使用一些更智能的重命名,例如模块__mv__:http://stackoverflow.com/a/29287813/196206 – Messa
这是另一种解决方案,它为我的作品:
var fs = require("fs"),
util = require('util');
...
//fs.renameSync(files.upload.path, "/tmp/test.png");
var readStream = fs.createReadStream(files.upload.path)
var writeStream = fs.createWriteStream("/tmp/test.png");
util.pump(readStream, writeStream, function() {
fs.unlinkSync(files.upload.path);
});
你可以看到这一点。我认为它有用ü [这里] [1] [1]:http://stackoverflow.com/questions/4568689/how-do-i-move-file-a-to-a-不同分区在节点js – SaliproPham
可能重复[如何将文件a移动到Node.js中的不同分区或设备?](https://stackoverflow.com/questions/4568689/how-do-i -move-file-a-to-a-different-partition-or-device-in-node-js) – bugwheels94