【问题标题】:Express JS Error hrow new TypeError('app.use() requires middleware functions');Express JS 错误 throw new TypeError('app.use() 需要中间件函数');
【发布时间】:2018-01-06 16:54:27
【问题描述】:

我的代码有什么问题是我的 app.js 文件,当我点击npm start 时,它会给我如下错误:

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

请帮我解决这个问题。

【问题讨论】:

  • 您的应用程序中的哪一行是 210?
  • 我的应用程序中没有第 210 行,这只是一个新鲜的快递应用程序
  • 您没有正确使用 multer。问题出在 app.js 文件的第 27 行。你应该检查这个线程stackoverflow.com/questions/31496100/…
  • @RohitJain 请检查答案

标签: javascript node.js express


【解决方案1】:

您使用 multer 模块时没有正确的详细信息,请查看更多文档至here。 问题是 multer({dest:'./uploads/'}) 返回对象,而不是中间件函数。

在 第 27 行使用以下行

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

.any()

接受通过网络传输的所有文件。一组文件将存储在 req.files 中。

以下其他选项如下:

  1. .single(字段名)
  2. .array(fieldname[, maxCount])
  3. .fields(字段)
  4. .none()
  5. .any()

更多详情请查看here的相同问题。

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 2018-02-18
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多