Node.js TypeError:无法读取未定义的属性“path”

我已经看了很多同样的问题的答案,但我还没有find一个工作的解决scheme。 我试图做一个Web应用程序,您可以上传文件使用快递和MULTER,我有一个问题,没有文件正在上传和REQ.FILE总是未定义。

Express和Mul版本为: "express": "^4.15.4", "multer": "^1.3.0"

我的configure.js看起来这样:

 multer = require('multer'); module.exports = function(app) { app.use(morgan('dev')); app.use(multer({ dest: path.join(__dirname, 'public/upload/temp')}).single('file')); routes(app); app.use('/public/', express.static(path.join(__dirname, '../public'))); 

消费代码如下所示:

  var tempPath = req.file.path, ext = path.extname(req.file.name).toLowerCase(), targetPath = path.resolve('./public/upload/' + imgUrl + ext); if (ext === '.png' || ext === '.jpg' || ext === '.jpeg' || ext === '.gif') { fs.rename(tempPath, targetPath, function(err) { if (err) throw err; res.redirect('/images/' + imgUrl); }); } else { fs.unlink(tempPath, function() { if (err) throw err; res.json(500, {error: 'Only image files are allowed.'}); }); } 

表格看起来像这样:

  <form method="post" action="/images" enctype="multipart/form- data"> <div class="panel-body form-horizontal"> <div class="form-group col-md-12"> <label class="col-sm-2 control-label" for="file">Browse:</label> <div class="col-md-10"> <input class="form-control" type="file" name="file" id="file"> </div> </div> 

我敢打赌,你的错误信息就在这一行

  var tempPath = req.file.path, 

因为这是唯一一次要求“path”作为对象属性的时候。 你的问题似乎很清楚,你的请求中没有文件(也就是名为“req”的对象)。 您应该在使用代码时logging或检查名为req的对象,以确保在请求中包含文件。