node.js - 学着网上做express登陆,报错message is not defined

浏览:20日期:2022-10-07

问题描述

似乎是ejs部分有问题,在login.html中有一句 <%- message %> 报错

/Users/zhangwen/demo/views/header.html:6 4| <meta charset='utf-8'> 5| <title><%= title %></title> >> 6| <link href='https://www.6hehe.com/stylesheets/bootstrap.min.css' rel='stylesheet' media='screen'> 7| </head> 8| <body screen_capture_injected='true'> message is not definedReferenceError: /Users/zhangwen/demo/views/header.html:6 4| <meta charset='utf-8'> 5| <title><%= title %></title> >> 6| <link href='https://www.6hehe.com/stylesheets/bootstrap.min.css' rel='stylesheet' media='screen'> 7| </head> 8| <body screen_capture_injected='true'>message is not defined at eval (eval at <anonymous> (/Users/zhangwen/demo/node_modules/ejs/lib/ejs.js:485:12), <anonymous>:22:16) at returnedFn (/Users/zhangwen/demo/node_modules/ejs/lib/ejs.js:514:17) at View.exports.renderFile [as engine] (/Users/zhangwen/demo/node_modules/ejs/lib/ejs.js:358:31) at View.render (/Users/zhangwen/demo/node_modules/express/lib/view.js:126:8) at tryRender (/Users/zhangwen/demo/node_modules/express/lib/application.js:639:10) at EventEmitter.render (/Users/zhangwen/demo/node_modules/express/lib/application.js:591:3) at ServerResponse.render (/Users/zhangwen/demo/node_modules/express/lib/response.js:961:7) at /Users/zhangwen/demo/routes/index.js:14:9 at Layer.handle [as handle_request] (/Users/zhangwen/demo/node_modules/express/lib/router/layer.js:95:5) at next (/Users/zhangwen/demo/node_modules/express/lib/router/route.js:131:13)

问题解答

回答1:

message需要在你render的时候定义的

回答2:

message没有定义啊,检查一下render或者之前有没有message存在

回答3:

你看你的报错就知道啦,,,在index.js文件14行出错,这里你渲染界面没有传页面渲染需要的message值,,在render内加一个对象参数,传入你的message的值

就是这样( ˙-˙ )

回答4:

是不是照着N-Blog写的?ejs模版会接收res.render中定义好的属性。贴下简单的实例:

router.js:

app.get(’/article/:_id’, function (req, res) { Post.getOneArticle(req.params._id, function(err, post){if(err){ req.flash(’error’, err); return res.redirect(’/’);}res.render(’article’, {//这下面定义的就是你在ejs中接收的,例如message title: post.title, articleTitle: req.params.title, post: post, user: req.session.user, success: req.flash(’success’).toString(), error: req.flash(’error’).toString()}); });});

article.ejs

<article class='k-article'> <h1><%= post.title %></h1> <%- post.post %> <hr/></article>回答5:

感谢各位的回答!一开始我分别照着下面两个教程做express登陆功能,结果都是message is not defined 错误,很无语,结果昨晚我又分别重做了这两个教程,又都能成功运行了,真心不知道第一次哪里出了问题,我都是一步一步按照教程来的,看来教程没问题,再次感谢大家的回答!??

这两个教程是类似的,都没有问题http://www.cnblogs.com/Leo_wl...

http://www.cnblogs.com/Leo_wl...

回答6:

app.use(function(req, res, next){这个写重了,我搞了一个星期才发现,看有没人和我一样默认在// error handlers上面注册了,看教程在app.use(express.static(path.join(__dirname, ’public’)))上面写“session配置”时又重写了一遍,结果下面写的就没生效,只有上面的生效

相关文章: