抛出新的 TypeError('app.use() 需要中间件函数') - 表示应用程序错误



我找不到问题所在的位置,而nodejs console不会说太多。

错误:

typeerror:app.use()需要中间件功能 在EventEmitter.use(c: users ezequiel desktop mobile_standard server standardserver node_modules express express lib application.js:210:11)) 在对象。(c: users ezequiel desktop mobile_standard server standardserver app.js:21:5) 在Module._compile(Module.JS:409:26) 在object.module._extensions..js(module.js:416:10) 在Module.load(Module.JS:343:32) 在function.module._load(Module.js:300:12) 在function.module.runmain(Module.JS:441:10) 在启动(Node.js:139:18) 在node.js:968:3

app.js(第21行 -> app.use(require('././controllers/login'));)

const express = require('express');
const cors = require('cors');
const bodyParser= require('body-parser');
const MongoClient = require('mongodb').MongoClient
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken'); 
const app = express();
var config = require('./config'); 
var User = require("./models/user"); 
app.use(cors());
app.options('*', cors());
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
mongoose.connect(config.database); 
app.set('superSecret', config.secret);
app.use(require('./middlewares/auth'));
app.use(require('./controllers/login'));    
app.get('/normal', function(req,res){
    res.json({
        prueba:'recibido',
        success: true
    })
})
app.listen(process.env.PORT || 8081, () => {
    })

控制器 - 登录,这是问题所在的地方。关于我看不到的表达的东西。:

var express = require('express');
var jwt = require('jsonwebtoken');
var auth = require('../middlewares/auth');
var apiRoutes = express.Router(); 
var User = require("../models/user");
apiRoutes.post('/authenticate',auth, function(req, res) {
    User.findOne({
        email: req.body.user.email
    }, function(err, user){
        if (err) throw err;
        if (!user){
            //res.json({success: false, message: 'No encontramos tu usuario registrado!'});
            //Crear nuevo usuario
            var newUser = new User(req.body.user);
            newUser.save(function(err){
                if(err) throw err;
                var token = jwt.sign(newUser, app.get('superSecret'),{
                });
                  res.json({
                      success: true,
                      token: token
                    }); 
                })
        }else if (user){
            var token = jwt.sign(user, app.get('superSecret'),{
            });
              res.json({
                  success: true,
                  token: token
                }); 
        }
    })
})

    apiRoutes.get('/testToken', function(req, res){
        res.json({
            msg: 'token funciona'
        })
    })

登录控制器没有任何导出。

只需将其添加到登录控制器文件的末尾:

module.exports = apiRoutes

可以在此问题或文档

中找到有关module.exports的更多信息。

相关内容

最新更新