Node.js 类型错误 : Cannot read property 'path' of undefined

标签 node.js express multer

我已经查看了同一问题的很多答案,但尚未找到可行的解决方案。我正在尝试制作一个网络应用程序,您可以使用express和multer上传文件,但我遇到的问题是没有上传文件并且req.file始终未定义。

Express 和 multer 版本为: "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>

最佳答案

我也遇到了同样的问题。但后来我将 multer 版本更改回 0.1.8。一切正常。您可能需要更改 package.json 文件: “multer”:“^0.1.8”

关于Node.js 类型错误 : Cannot read property 'path' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46272633/

相关文章:

javascript - 如何查找文档

node.js - Oriento 查询生成器类似子句

node.js - 当我在 multer 中使用文件过滤器时如何捕获错误?

node.js - 无法使 multer filefilter 错误处理工作

node.js - Node imap 尝试更新标志 : Error: Command received in Invalid state.

node.js - gulp-typescript 无法转译我的项目 ts 文件

javascript - moment.js isoWeek 不适用于 Heroku 实例

javascript - 使变量可供其他 Node 模块访问

node.js - multer 保存图像而不使用 mimetype

node.js - Mongoose - 为所有模式实现一个函数(不是在每个模式上)