搜尋

首頁  >  問答  >  主體

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

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

/Users/zhangwen/demo/views/header.html:6 4| <meta charset="utf-8"> 5| <title><%= title %></title> >> 6| <link href="/stylesheets/bootstrap.min.css" rel="stylesheet" media="screen"> 7| </head> 8| <body screen_capture_injected="true"> message is not defined

ReferenceError: /Users/zhangwen/demo/views/header.html:6
    4|     <meta charset="utf-8">
    5|     <title><%= title %></title>
 >> 6|     <link href="/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)
怪我咯怪我咯2768 天前999

全部回覆(6)我來回復

  • 高洛峰

    高洛峰2017-04-17 14:57:43

    message需要在你render的時候定義的

    回覆
    0
  • 阿神

    阿神2017-04-17 14:57:43

    message沒有定義啊,檢查一下render或之前有沒有message存在

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:57:43

    你看你的報錯就知道啦,,,在index.js
    檔案14行出錯,這裡你渲染介面沒有傳頁面渲染需要的message值,,
    在render內加上一個物件參數,傳入你的message的值

    就是這樣( ˙-˙ )

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:57:43

    是不是照著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>

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 14:57:43

    感謝各位的回答!一開始我分別照著下面兩個教程做express登陸功能,結果都是message is not defined 錯誤,很無語,結果昨晚我又分別重做了這兩個教程,又都能成功運行了,真心不知道第一次哪裡出了問題,我都是一步一步按照教學來的,看來教程沒問題,再次感謝大家的回答! ??

    這兩個教學是類似的,都沒有問題
    http://www.cnblogs.com/Leo_wl...

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 14:57:43

    app.use(function(req, res, next){
    這個寫重了,我搞了一個星期才發現,看有人和我一樣
    默認在// error handlers上面註冊了,看教學在
    app.use(express.static(path.join(__dirname, 'public')))上面
    寫「session配置」時又重寫了一遍,結果下面寫的就沒生效,只有上面的生效

    回覆
    0
  • 取消回覆