(node:7016)[DEP0013] DeprecationWarning:不建议在不回调的情况下调用异步函数

时间:2017-10-30 06:41:35

标签: node.js ajax

我想将文件从ajax上传到node.js.code工作正常。但它显示了deprecated.like

(node:7016)[DEP0013]弃用警告:不推荐在不回调的情况下调用异步函数

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




2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

fs异步函数现在需要回调。您可以通过更新此行来修复代码:

fs.rename(file.path,path.join(form.uploadDir,file.name));

这一个: fs.rename(file.path,path.join(form.uploadDir,file.name),(error)=> {/ * handle error * /}))

您也可以查看以下文档。 见https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback