2017-10-30 10 views
0
私はそれが

(ノード:7016)[DEP0013] DeprecationWarning:コールバックなしの非同期関数を呼び出すと、推奨されません

deprecated.like示しperfectly.but取り組んでいるnode.js.codeへのAjaxのファイルをアップロードしたい

(ノード:7016)[DEP0013] DeprecationWarning:コールバックのない非同期関数の呼び出しは、非推奨のです。 nodejsでの問題は、誰もがこの問題を解決するcode.canれるもの

?ありがとう

var express = require('express'); 
 
var app = express(); 
 
var path = require('path'); 
 
var formidable = require('formidable'); 
 
var fs = require('fs'); 
 

 
app.use(express.static(path.join(__dirname, 'public'))); 
 

 
app.get('/', function(req, res){ 
 
    res.sendFile(path.join(__dirname, 'views/index.html')); 
 
}); 
 

 
app.post('/upload', function(req, res){ 
 

 
    console.log("get"); 
 
    
 
    var form = new formidable.IncomingForm(); 
 

 
    form.multiples = true; 
 

 
    form.uploadDir = path.join(__dirname, '/uploads'); 
 

 
    
 
    form.on('file', function(field, file) { 
 
    fs.rename(file.path, path.join(form.uploadDir, file.name)); 
 
    }); 
 

 

 
    form.on('error', function(err) { 
 
    console.log('An error has occured: \n' + err); 
 
    }); 
 

 
    
 
    form.on('end', function() { 
 
    res.end('success'); 
 
    }); 
 

 
    
 
    form.parse(req); 
 

 
}); 
 

 
var server = app.listen(8086, function(){ 
 
    console.log('Server listening on port 3000'); 
 
});

答えて

0

fs.rename()は非同期であり、名前の変更が行われたときに呼び出されるコールバックを取ります。ノードはこれを無視しているため警告していますが、これは通常間違いです。

あなたは、おそらく、少なくとも警告が離れて行くようべき、エラーをチェックする必要があります。ここに

form.on('file', function(field, file) { 
    fs.rename(file.path, path.join(form.uploadDir, file.name), function(err){ 
     console.log("Error renaming file:", err); 
    } 
}); 

より:https://nodejs.org/api/fs.html

0

FS非同期機能は今のコールバックを要求します。次の行を更新してコードを修正できます。

fs.rename(file.path、path.join(form.uploadDir、file.name));これによって

: fs.rename(file.path、path.join(form.uploadDir、file.name)、(エラー)=> {/ *エラー処理* /}))

あなた以下のドキュメントも確認できます。 https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback

+0

コメントありがとうございました..... – sampleprogrammers

関連する問題