express+multer抛出错误:'app.use() requires middleware functions'

发布于 2022-09-01 19:46:37 字数 1039 浏览 21 评论 0

利用node,想要通过表单传递值,node的代码如下:

var express=require('express'),
    //form的get方法使用url模块
    url=require('url'),
    //form的post方法使用url模块
    bodyParser=require('body-parser'),
    multer=require('multer'),
    util=require('util'),
    app=express();

app.use(multer({dest:'./'}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));

app.get('/',function(req,res){
    res.sendfile('./index.html');
});

app.post('/reg',function(req,res){//页面是post,服务器端也是要post
    var urlObj=url.parse(req.url,true);
    res.write(util.inspect(req.files));
    res.end(JSON.stringify(req.body));
});

app.listen(8080);

目前express版本是4.13.3,multer的版本是1.0.1

运行抛出的错误如下:

throw new TypeError('app.use() requires middleware functions');

在stackoverflow上查找到类似的问题,但是他的原因是所使用的包的问题stackoverflow问题
我查看了multer的文档,好像它并没有做出类似的改变。特意向大家请教这个问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

无风消散 2022-09-08 19:46:37

这个问题以及解决了,是multer版本的问题。multer 需要装 0.1.8 的版本。

npm install multer@0.1.8 
野の 2022-09-08 19:46:37

我现在升级multer 1.1.0了,也碰到同样问题,然后去他的官网了解下。

已经不能这样写了

app.use(multer({dest:'./'}));

你要在路由里面写

var multer = require('multer');

var upload = multer({dest: './public/images/user'});

router.post('/upload', upload.fields([
    {name: 'file1'},
    {name: 'file2'},
    {name: 'file3'},
    {name: 'file4'},
    {name: 'file5'}
]), function(req, res, next){
    for(var i in req.files){
        console.log(req.files[i]);
    }
    req.flash('success', '文件上传成功!');
    res.redirect('/upload');
});

上面这个例子是我同时提交5个name,
他提供3个方法 .single() .array() .fields()
.single()是一个文件
例如

upload.single('avatar')//avatar是name名

.array()是同样name名的多个文件
例如

upload.array('photos', 12)//photos是name名,第二个参数是最大12个为name名的文件

.fields()是多个文件
例如

upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])
//maxCount是可选

希望帮助后面的nodejs学习者

白衬杉格子梦 2022-09-08 19:46:37

我也碰见了这个问题,请问您解决了吗?

风和你 2022-09-08 19:46:37

我今天也遇到了这个问题了,然后今天顺便研究了一下,你如果要用v1.1.0版本的话可以参照我的代码

// 文件上传插件
var multer = require('multer');
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/images/user')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname)
  }
});
var upload = multer({ storage: storage });
var cpUpload = upload.any();
app.use(cpUpload);
橘虞初梦 2022-09-08 19:46:37

我是另外一台电脑从码云git pull 下来的是所有代码;运行时也出现这个问题;我安装了multer@0.1.8或者最新版本都无效;怎么办啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文