' TypeError的原因:res.render不是函数'

时间:2017-05-06 00:34:31

标签: javascript node.js express

我有一个明确的申请如下:

var express = require('express');
var router = express.Router();
var passport = require('passport');
var User = require('../models/user');
var request = require('request');
var cheerio = require('cheerio');

//register
router.post('/register', function(req, res){
    var username = req.body.username;
    var password = req.body.password;
    var studentID = req.body.studentID;

    areCredentialsValid(username, password, function (statusBoolean) {
        if (statusBoolean === true){
            User.register(new User({
                username: username,
                password: password,
                studentID: studentID
         }), password, function (){
            console.log('Registered:');
            res.redirect('./');
            res.end()
        })
    }else{
        console.log('Invalid Credentials:');
        res.redirect('./');
        res.end()
        }
    });
});

function areCredentialsValid(username, password, callback){
    if (typeof username !== 'undefined' && username !== null && username !== '' &&
        typeof password !== 'undefined' && password !== null && password !== ''){
        var cookie = {};
        var responseBoolean = false;
        var config = {
            method: 'GET',
            url: 'https://parents.mtsd.k12.nj.us/genesis/j_security_check',
            headers: {
                'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
            }
        };
        request(config, function (error, response, body) {
            cookie = response.headers['set-cookie'];
            //console.log(cookie);
            var config = {
                method: 'POST',
                url: 'https://parents.mtsd.k12.nj.us/genesis/j_security_check',
                form: {
                    'j_username': username,
                    'j_password': password
                },
                headers: {
                    'Cookie': cookie,
                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
                }
            };
            request(config, function (error, response2, body) {
                //console.log(response);
                //console.log(response2.headers);
              if (response2.headers['location'] === '/genesis/parents?gohome=true'){
              responseBoolean = true;
              }else{
                  responseBoolean = false;
              }
              callback(responseBoolean);
              return responseBoolean;
            })
        })
    }
}

//login
router.post('/login', passport.authenticate('local', function(req, res) {
    res.render('index', {title: 'Express'});
    console.log(req.user.username + ' has successfully logged in:');
}));

module.exports = router;

然而,问题是,当我运行此应用程序时,我收到错误:TypeError: res.render is not a function。在阅读了其他类似的问题之后,我推断出问题很可能与我的res变量的范围有关,但是,由于我没有任何重复的变量或任何变量,我看不出问题出在哪里其他问题中提到的其他问题。此外,我的视图引擎已正确配置。感谢所有帮助!

  

编辑:ViewEngine设置

var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var User = require('./models/user');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var index = require('./routes/index');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

1 个答案:

答案 0 :(得分:0)

问题只是一种语法错字。

router.post('/login', passport.authenticate('local'), function(req, res) {
res.render('index', {title: 'Express'});
console.log(req.user.username + ' has successfully logged in:');
});