2016-07-09 10 views
0

私はディレクトリにファイルを移動するfs.move()をしようとすると、私は次のエラーを取得する:Node.JSを使用してファイルをディレクトリに移動するにはどうすればよいですか?

/home/decuge31/node_modules/fs-extra/lib/move/index.js:19                             | 
    var shouldMkdirp = ('mkdirp' in options) ? options.mkdirp : true                           | 
           ^                                  | 
TypeError: Cannot use 'in' operator to search for 'mkdirp' in undefined                          | 
    at Object.mv [as move] (/home/decuge31/node_modules/fs-extra/lib/move/index.js:19:35)                     | 
    at Object.<anonymous> (/home/decuge31/bscBot.js:8:4)                              | 
    at Module._compile (module.js:456:26)                                 | 
    at Object.Module._extensions..js (module.js:474:10)                              | 
    at Module.load (module.js:356:32)                                  | 
    at Function.Module._load (module.js:312:12)                                | 
    at Function.Module.runMain (module.js:497:10)                               | 
    at startup (node.js:119:16)                                    | 
    at node.js:902:3 

は、これは、ファイルbscBot.jsで私のコードです:

var fs = require('fs-extra'); // This imports the fs-extra dependency 
var request = require('request'); // This imports the request dependency 

fs.ensureDir('css'); // This creates a folder called css 

request('http://agar.io/css/master.css').pipe(fs.createWriteStream('master.css')); // This downloads the master.css file 

fs.move('master.css', 'css'); // This moves master.css to the specified directory, in this case it is called css 

答えて

1
var fs = require('fs-extra'); 
var request = require('request'); 
fs.ensureDir('css'); 
request('http://agar.io/css/master.css').pipe(fs.createWriteStream('master.css')); 
fs.move('master.css', 'css/master.css', function (err) { 
    if (err) 
     console.error(err); 
}); 
+0

を与えます。 – doubleui

+1

これは動作し、テストしました。コールバックを省略することに関連する問題であると思われます。エラーをログに記録し、自分自身を助けなければなりません。 –

+0

@udiduの答えはより正確でエラーなしで動作します:要求は非同期なので、終了を待つ必要があります移動する前に。とにかく、次のような名前に移動することができます: 'fs.move( 'master.css'、 'css/NEWNAME.css'、function(err){if(err)console.error(err);});' – doubleui

0

fs.move('master.css', 'css/master.css')

+0

はまだ( 'fs.unlink')再放送であなたの' CSS/master.css'削除することを忘れないでください、私に同じエラー –

1

をお試しくださいファイルを移動する前にパイプにストリームを書き込むまで待つ必要があります。

あなたはこれを試すことができます。

var fs = require('fs-extra') // This imports the fs-extra dependency 
 
var request = require('request') // This imports the request dependency 
 

 
fs.ensureDirSync('css') // This creates a folder called css 
 

 
var stream = request('http://agar.io/css/master.css').pipe(fs.createWriteStream('master.css')) // This downloads the master.css file 
 

 
stream.on('end', function() { 
 
     fs.move('master.css', 'css') 
 
});

関連する問題