2012-08-30 18 views
5

Debian Wheezyでファイルの名前を変更すると、fs.renameまたはfs.renameSyncを使用しても機能しません。Node.JS fs.renameが動作しない

これは、/ tmp /から別の場所に移動されたファイルでのみ発生します。

報告されたエラーは次のとおりです。EXDEV、クロスデバイスリンクが許可されていません。

+0

あなたはそれを見ることができます。私はuの ため、それは便利だと思う[こちら] [1] [1]:http://stackoverflow.com/questions/4568689/how-do-i-move-file-a-to-a-異なるパーティション内のノード-js – SaliproPham

+0

[ファイルaをNode.js内の別のパーティションまたはデバイスに移動するにはどうすればいいですか?](https://stackoverflow.com/questions/4568689/how-do-i) – bugwheels94

答えて

0

Debian Wheezyはデフォルトで/ tmpフォルダにtmpfsを使います。

これは、/ etc/default/rcSを変更することで無効にすることができます。

RAMTMP=yes 

これは私のために働く別のソリューションです

RAMTMP=no 
+3

問題は、ノードfs.renameSyncはデバイス間の名前変更を行うことができず、特定のマシンには異なるtmpがあるわけではないということですデバイス。これだけでRAMTMPをオフにしないでください。 (また、現在のDebian JessieのRAMTMPでは動作しません。/ tmp tmpfsはsystemdを介して設定されています)。例えば__mv__モジュールのようにスマートな名前を変更してください:http://stackoverflow.com/a/29287813/196206 – Messa

2

に設定する必要があります。

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); 
}); 
関連する問題