2017-07-31 27 views
0

什麼是錯我的代碼這裏是我的app.js文件,當我打的npm start它會給我的錯誤,如如下:Express JS Error hrow new TypeError('app.use()require middleware functions');

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

我用下面的代碼。

  var express = require('express'); 
      var path = require('path'); 
      var favicon = require('serve-favicon'); 
      var logger = require('morgan'); 
      var cookieParser = require('cookie-parser'); 
      var bodyParser = require('body-parser'); 
      var session = require('express-session'); 
      var expressValidator = require('express-validator'); 
      var passport = require('passport'); 
      var LocalStrategy = require('passport-local').Strategy; 
      var multer = require('multer'); 
      var flash = require('connect-flash'); 
      var mongo = require('mongodb'); 
      var mongoose = require('mongoose'); 
      var db = mongoose.connection; 


      var index = require('./routes/index'); 
      var users = require('./routes/users'); 

      var app = express(); 

      // view engine setup 
      app.set('views', path.join(__dirname, 'views')); 
      app.set('view engine', 'ejs'); 

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


      // uncomment after placing your favicon in /public 
      //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
      app.use(logger('dev')); 
      app.use(bodyParser.json()); 
      app.use(bodyParser.urlencoded({ 
      extended: false 
      })); 
      app.use(session({ 
      secret: 'secret', 
      resave: true, 
      saveUninitialized: true 
      })); 
      app.use(passport.initialize()); 
      app.use(passport.session()); 
      app.use(expressValidator({ 
      errorFormatter: function(param, msg, value) { 
       var namespace = param.split('.'), 
       root = namespace.shift(), 
       formParam = root; 

       while (namespace.length) { 
       formParam += '[' + namespace.shift() + ']'; 
       } 
       return { 
       param: formParam, 
       msg: msg, 
       value: value 
       }; 
      } 
      })); 
      app.use(cookieParser()); 
      app.use(express.static(path.join(__dirname, 'public'))); 
      app.use(flash()); 
      app.use(function(req, res, next) { 
      res.locals.messages = require('express-messages')(req, res); 
      next(); 
      }); 


      app.use('/', index); 
      app.use('/users', users); 

      // catch 404 and forward to error handler 
      app.use(function(req, res, next) { 
      var err = new Error('Not Found'); 
      err.status = 404; 
      next(err); 
      }); 

      // error handler 
      app.use(function(err, req, res, next) { 
      // set locals, only providing error in development 
      res.locals.message = err.message; 
      res.locals.error = req.app.get('env') === 'development' ? err : {}; 

      // render the error page 
      res.status(err.status || 500); 
      res.render('error'); 
      }); 

      module.exports = app; 

在控制檯上,我得到了以下輸出,

TypeError: app.use() requires middleware functions at Function.use (C:\Users\Rohit Jain\Desktop\nodjs\userloginsystem\node_modules\express\lib\application.js:210:11) at Object. (C:\Users\Rohit Jain\Desktop\nodjs\userloginsystem\app.js:27:5) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.require (module.js:498:17) at require (internal/module.js:20:19) at Object. (C:\Users\Rohit Jain\Desktop\nodjs\userloginsystem\bin\www:7:11) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.runMain (module.js:605:10) at run (bootstrap_node.js:425:7) at startup (bootstrap_node.js:146:9) at bootstrap_node.js:540:3 

請幫我解決這個問題。

+0

在你的應用程序中該行是210嗎? –

+0

在我的應用程序中沒有第210行,這只是一個新鮮的快速應用程序 –

+0

您不要使用正確的方式進行多路複用。問題出現在你的app.js文件的第27行。 你應該檢查這個線程https://stackoverflow.com/questions/31496100/cannot-app-usemulter-requires-middleware-function-error – sheplu

回答

0

您已經使用了沒有適當細節的multer模塊,請檢查更多文檔到here。 問題是,multer({dest:'./uploads/'})返回對象,而不是中間件功能。

使用下面的一行行27號

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

.ANY()

接受過來的電線中的所有文件。一組文件將被存儲在req.files中。

下列其他選項是有如下:

  1. 。單(字段名)
  2. .array(字段名[,MAXCOUNT])
  3. 點域(字段)
  4. .none()
  5. .ANY()

欲瞭解更多詳情請查看同樣的問題here

希望這會幫助你。

+0

謝謝很多人! –

相關問題