2015-11-02 1 views
2

Je reçois l'erreur de suivi en essayant de récupérer les fichiers téléchargés. J'ai cherché sur le net et tout ce que je trouve est que les gens injectent le résultat de multer() comme, mais tout ce que je middleware GOT erreurs ...NodeJs Multer erreur

/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) 

Voici le code de cette partie de l'application

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); 
+0

s'il vous plaît se référer ici: [Erreur multer] (http://stackoverflow.com/questions/31496100/cannot-app-usemulter-requires-middleware-function-error) –

+0

S'il vous plaît se référer ici: [error multer ] (http://stackoverflow.com/questions/31496100/cannot-app-usemulter-requires-middleware-function-error) –

Répondre

2

Le code que vous avez pour la configuration des routes et le chemin semblent un peu faux. Thats est comment il est décrit comme here. Le second paramètre (s) dans app.use doit être ou plusieurs fonctionsapp.use docs tout mul dans votre code est un objet, le résultat de l'appel d'usine de configuration plus tôt ici: 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

avez-vous essayé comme ça, selon les docs sur la page du module?

var mul = multer({ dest: 'your_uploads_path/' }); 
app.use('/files', mul.array(), files); //or other option 

autres options sont ici: https://www.npmjs.com/package/multer#multer-opts

UPD2

According to docsmulter retourne en effet objet, qui devrait être consommé par busboy, vous avez donc besoin d'être requis et configuré ainsi - https://github.com/mscdex/busboy#busboy-methods

+0

J'ai testé avant de demander, jette encore .... :( –

+0

quelle erreur vous obtenez dans ce cas ?, lorsque vous avez 'app.use ('/files ', [mul, files]);' – shershen

+0

Le même que express attend la fonction, mais obtient un objet –

1

Voici le code qui fonctionne, grâce à @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