NodeJs Multer 错误
NodeJs Multer error
我在尝试检索上传的文件时遇到跟随错误。
我在网上搜索了一下,发现人们将 multer() 的结果作为中间件注入,但我得到的只是错误...
/node_modules/express/lib/router/index.js:458
throw new TypeError('Router.use() requires middleware function but got a
^
TypeError: Router.use() requires middleware function but got a Object
at Function.use (/node_modules/express/lib/router/index.js:458:13)
at EventEmitter.<anonymous> (/node_modules/express/lib/application.js:219:21)
at Array.forEach (native)
at EventEmitter.use (/node_modules/express/lib/application.js:216:7)
at Object.<anonymous> (/app.js:40:5)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
这是应用程序那部分的代码
var express = require('express');
var multer = require('multer');
var mul = multer({limits : {fileSize : 1000000, files : 10}});
var app = express();
var port = 3000;
var server = require('http');
app.use('/files', mul, files);
function files (req, res) {
console.log(req.files, req.file);
}
server = server.createServer(app);
server.listen(process.env.PORT || port);
您配置路由和 multer 的代码似乎有点错误。这就是它被描述为 here. Second parameter(s) in app.use
should be function or functions app.use docs 而你的代码中的 mul
是一个 Object,你的配置工厂调用的结果在这里早些时候:var mul = multer({limits : {fileSize : 1000000, files : 10}});
//other stuff
var mul = multer({limits : {fileSize : 1000000, files : 10}});
app.use('/files', [mul, files]);
function files (req, res) {
console.log(req.files, req.file);
}
//other stuff
UPD
根据模块页面上的文档,您是否这样尝试过?
var mul = multer({ dest: 'your_uploads_path/' });
app.use('/files', mul.array(), files); //or other option
其他选项在这里:https://www.npmjs.com/package/multer#multer-opts
UPD2
According to docs multer
indeed returns object, that should be consumed by busboy
, so you need it to be required and configured as well - https://github.com/mscdex/busboy#busboy-methods
这是有效的代码,感谢@shershen
//other stuff
var mul = multer({limits : {fileSize : 1000000, files : 10}});
app.use('/files', mul.any(), files);
function files (req, res) {
console.log(req.files, req.file);
}
//other stuff
我在尝试检索上传的文件时遇到跟随错误。 我在网上搜索了一下,发现人们将 multer() 的结果作为中间件注入,但我得到的只是错误...
/node_modules/express/lib/router/index.js:458
throw new TypeError('Router.use() requires middleware function but got a
^
TypeError: Router.use() requires middleware function but got a Object
at Function.use (/node_modules/express/lib/router/index.js:458:13)
at EventEmitter.<anonymous> (/node_modules/express/lib/application.js:219:21)
at Array.forEach (native)
at EventEmitter.use (/node_modules/express/lib/application.js:216:7)
at Object.<anonymous> (/app.js:40:5)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
这是应用程序那部分的代码
var express = require('express');
var multer = require('multer');
var mul = multer({limits : {fileSize : 1000000, files : 10}});
var app = express();
var port = 3000;
var server = require('http');
app.use('/files', mul, files);
function files (req, res) {
console.log(req.files, req.file);
}
server = server.createServer(app);
server.listen(process.env.PORT || port);
您配置路由和 multer 的代码似乎有点错误。这就是它被描述为 here. Second parameter(s) in app.use
should be function or functions app.use docs 而你的代码中的 mul
是一个 Object,你的配置工厂调用的结果在这里早些时候:var mul = multer({limits : {fileSize : 1000000, files : 10}});
//other stuff
var mul = multer({limits : {fileSize : 1000000, files : 10}});
app.use('/files', [mul, files]);
function files (req, res) {
console.log(req.files, req.file);
}
//other stuff
UPD
根据模块页面上的文档,您是否这样尝试过?
var mul = multer({ dest: 'your_uploads_path/' });
app.use('/files', mul.array(), files); //or other option
其他选项在这里:https://www.npmjs.com/package/multer#multer-opts
UPD2
According to docs multer
indeed returns object, that should be consumed by busboy
, so you need it to be required and configured as well - https://github.com/mscdex/busboy#busboy-methods
这是有效的代码,感谢@shershen
//other stuff
var mul = multer({limits : {fileSize : 1000000, files : 10}});
app.use('/files', mul.any(), files);
function files (req, res) {
console.log(req.files, req.file);
}
//other stuff