2015-01-08 2 views
0

Я довольно новичок в узле, поэтому, пожалуйста, несите меня, если это действительно глупо. Я просто пытаюсь добавить свои собственные маршруты для пары новых страниц, которые основаны на образце приложения, которое я получил из книги. Вот некоторые код моего app.js файла:node.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'); 
}; 

Есть ли что-нибудь, что я пропустил? Я думал, что это должно быть очень просто для добавления новых маршрутов таким образом, но я действительно расстроен на этом этапе. Пожалуйста, помогите ...

ответ

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); 

Это должно затем работать для вас. В основном вы забыли включить свой файл. Кроме того, вы пытаетесь получить доступ к своей функции через переменную маршрутов, которая фактически отражает другой файл.

+0

спасибо за ответ, очень ценю это. Я забыл упомянуть, что я поместил tutorRequestForm.js в папку маршрутов, так что это действительно включено. Я понял, что это не имеет ничего общего с проблемой маршрутизации, оказалось, что страница, которую я произвольно выполняет для маршрутов, требует передачи некоторых объектов ... По крайней мере, это то, что я выяснил. .. Итак, я перенаправляю маршрут на новую пустую страницу, теперь все в порядке. Я очень ценю вашу помощь! – AdrianSong

+0

Хорошо, круто, что теперь он работает! Мое удовольствие помочь вам – fr33g

Смежные вопросы