在路由[nodejs]中要求控制器时出错

时间:2017-07-30 16:51:59

标签: javascript node.js express routes request

我在一个节点js应用程序的控制器文件夹中创建了一个用户控制器,并尝试将其包含在我的路由中,并且我不断收到此错误消息,它正常工作,然后突然决定不这样做,我我已经彻底查看了可能导致故障的任何可能的事情。

这是错误

Error: Route.get() requires callback functions but got a [object Undefined]

以下是文件

控制器文件./controller/user.js

// controller/user.js file


exports.login = function(req, res){
    res.render('auth/login');
}

exports.register = function(req, res){
    res.render('auth/register');
}

exports.reset = function(req, res){
    res.render('auth/reset');
}

路由文件./config/routes.js

// routes.js
var user = require('../controllers/user');
var home = require('../controllers/home');

module.exports = function(app){

// user login
app.get('/app/login', user.login);

// user registration
app.get('/app/register', user.register);

// user password reset
app.get('/app/reset', user.reset);
}

app.js

// ./app.js
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const expressValidator = require('express-validator');
const app = express();
const PORT = 3000;

// const logger = function(req, res, next){
//     console.log('Loggin');
//     next();
// };

// app.use('logger')

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

// Body parser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

// Static path
app.use(express.static(path.join(__dirname, '/public')));

// Global Vars
app.use(function(req, res, next){
    res.locals.errors = null;
    next();
});


// Routes
require('./config/routes')(app);

app.listen(PORT, function(){
    console.log('Server started on port ' + PORT);
});

1 个答案:

答案 0 :(得分:0)

您需要在route.js文件中调整控制器的路径。

您正在引用require('../controllers/user')而不是require('../controller/user'),也许您还需要修复家庭控制器的路径。