node.js添加无法读取属性的新路由

时间:2015-01-08 18:54:05

标签: express

我对Node很陌生,所以如果这真的很愚蠢,请耐心等待。我只是想为几个新页面添加自己的路由,这些新页面是基于我从书中获得的示例应用程序构建的。以下是我的app.js文件的一些代码:

var express = require('express'),
    routes = require('./routes'),
    http = require('http'),
    path = require('path'),
    mongoose = require('mongoose'),
    models = require('./models'),
    dbUrl = process.env.MONGOHQ_URL || 'mongodb://@localhost:27017/blog',
    db = mongoose.connect(dbUrl, {safe: true}),

以下是所有路线定义:

app.get('/', routes.index);
app.get('/studentLogin', routes.user.studentLogin);
app.post('/studentLogin', routes.user.checkID);
app.get('/studentLoginAfter', routes.tutorRequestForm.selectCourse);
app.get('/login', routes.user.login);
app.post('/login', routes.user.authenticate);
app.get('/logout', routes.user.logout);
app.get('/admin', authorize, routes.article.admin);
app.get('/post', authorize, routes.article.post);
app.post('/post', authorize, routes.article.postArticle);
app.get('/articles/:slug', routes.article.show);

studentLoginAfter路线是我想要添加的路线,但每次添加时,我都会收到如下错误:

app.get('/studentLoginAfter', routes.tutorRequestForm.selectCourse);
                                              ^
TypeError: Cannot read property 'selectCourse' of undefined.

但是在我的tutorRequestForm.js文件中,我显然是这样定义了我的处理程序:

exports.selectCourse = function (req, res, next) {
    res.render('selectCourseForm');
};

我错过了什么吗?我认为以这种方式添加新路线应该非常简单,但我现在真的很沮丧。请帮忙......

1 个答案:

答案 0 :(得分:0)

好吧,你错过了包含你的tutorRequestForm.js文件。我建议你阅读一个好的node.js教程,还有一个用于express.js。对我来说,显然你似乎没有得到节点背后的真实概念,尤其是express.js。

尽管如此,你应该这样做:

// All the requires are here...
var tutorRequestForm = require('pathToTheFile/tutorRequestForm');
// All the routes are defined here...
app.get('/studentLoginAfter', tutorRequestForm.selectCourse);

这应该适合你。您基本上忘记了包含您的文件。此外,您正尝试通过routes变量访问您的函数,该变量实际上反映了另一个文件。