1
votes

I cannot find where the issue is and nodejs console is not saying much.

Error:

TypeError: app.use() requires middleware functions at EventEmitter.use (C:\Users\Ezequiel\Desktop\mobile_standard\server\StandardServer\node_modules\express\lib\application.js:210:11) at Object. (C:\Users\Ezequiel\Desktop\mobile_standard\server\StandardServer\app.js:21:5) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) at startup (node.js:139:18) at node.js:968:3

app.js (line 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, () => {

    })

controllers - login, Here is where the issue must be. Something about Express I cannot see.:

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'
        })
    })
1

1 Answers

4
votes

There is nothing exported from the login controller.

Just add this to the end of the login controller file :

module.exports = apiRoutes

More info on module.exports can be found in this question or the Docs