2012-08-30 20 views
5

Renombrar un archivo en Debian Wheezy no funciona utilizando fs.rename o fs.renameSync.Node.JS fs.rename no funciona

Esto solo ocurre en archivos movidos de/tmp/a otra ubicación.

El error notificado es: EXDEV, no se permite el enlace entre dispositivos.

+0

Se puede ver que. Creo que es útil para u [aquí] [1] [1]: http://stackoverflow.com/questions/4568689/how-do-i-move-file-a-to-a- different-partition-in-node-js – SaliproPham

+0

Posible duplicado de [¿Cómo muevo el archivo a a una partición o dispositivo diferente en Node.js?] (https://stackoverflow.com/questions/4568689/how-do-i -move-file-a-a-different-partition-or-device-in-node-js) – bugwheels94

Respuesta

0

Debian Wheezy utiliza tmpfs para la carpeta/tmp de forma predeterminada.

Esto se puede desactivar modificando/etc/default/rcS.

RAMTMP=yes 

tiene que ser fijado a

RAMTMP=no 
+3

El problema es que el nodo fs.renameSync no puede hacer cambios de nombre entre dispositivos, no es que alguna máquina en particular tenga tmp en diferentes dispositivo. No apague RAMTMP solo porque esto. (También en el actual Debian Jessie RAMTMP no funciona,/tmp tmpfs se configura a través de systemd.) Utilice un cambio de nombre más inteligente, por ejemplo, el módulo __mv__: http://stackoverflow.com/a/29287813/196206 – Messa

2

Ésta es otra solución que funciona para mí:

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); 
});