我想将文件从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');
});

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