CNode

运行Node.js开发指南中的例子出错 user is not defined ?????

Nnextseeker发布于14 年前最后回复12 年前9 回复13156 浏览0 收藏

还没找到原因。。。

查看回复

回复 (9)

G
g8up#1·12 年前

我是在看《Node.js开发指南》时,运行代码遇到的,提示layout.ejs里的title为undefined。

J
jx-zhou#2·12 年前

应该是表单的数据没有传到后台吧,是只有user没有拿到,还是所有表单数据都没拿到,检查一下你的表单代码

J
jx-zhou#3·12 年前
引用 napster99你好,我也碰到了这个问题,改成<% if (!locals.user) { % 确实不会报错了,但是好像这个永远为真,我想问的是 req.session.user = user; sessio...

req.session.user = user;??你的代码里只有req.session.user = new User;。这个是指在没有该用户信息的创建一个,并且把它放到请求的session里面

H
happywowwow#4·13 年前
引用 nextseeker引用时改成<% if (!locals.user) { % 好用了

这个不懂 具体点 不知道怎么替换。。

O
oslvbo#5·13 年前

【解决方法】 index.js 内开头添加一行定义: var User = require('../models/user');

K
kxxoling#6·13 年前
引用 oslvbo【解决方法】 index.js 内开头添加一行定义: var User = require('../models/user');

我也遇到了一样的问题,而且报错的位置很奇怪: ReferenceError: /Users/windrunner/WebstormProjects/microblog/views/index.ejs:13 11| 12|

13| div1 14| p1 15| 16|

这个方法不能解决,附index.js代码如下:

var User = require('../models/user');

module.exports = function(app){ app.get('/', function(req, res){ res.render('index', { title: '首页' }) });

app.get('/reg', function(req, res){
    res.render('reg',{
        title: '用户注册'
    });
});
//var util = require('util');
app.post('/reg', function(req, res){
    //校验两次输入的口令是否一致
    if (req.body['password-repeat'] != req.body['password']){
        req.fresh('error', '两次输入的密码不一致');
        return res.redirect('/reg');
    }

    var crypto = require('crypto');
    var crypto = require('crypto');
    //生成md5散列值
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('base64');

    var newUser = new User({
        name: req.body.username,
        password: password
    });

    User.get(newUser.name, function(error, user){
        if(user){
            error = 'Username already exsits.';
        }
        if(error){
            req.flash('error', error);
            return res.redirect('reg');
        }

        //如果不存在则新增用户
        newUser.save(function (error){
            if(error){
                req.flash('error', error);
                return res.redirect('req');
            }
            req.session.user =new User;
            req.flash('success', '注册成功');
            res.redirect('/');
        })
    });

});

};

N
nextseeker#7·14 年前

引用时改成<% if (!locals.user) { %>好用了

N
napster99#8·13 年前

你好,我也碰到了这个问题,改成<% if (!locals.user) { %>确实不会报错了,但是好像这个永远为真,我想问的是 req.session.user = user; session里的user和这个有何种关系?

J
jalon#9·13 年前

###可以试试这样###

app.get('/login', function (req, res) {
    res.render('login', {
        title: '登录',
        user: req.session.user,
        success: req.flash('success').toString(),
        error: req.flash('error').toString()});
});
参与回复
登录后即可参与回复。登录