検索

ホームページ  >  に質問  >  本文

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)
怪我咯怪我咯2777日前1009

全員に返信(6)返信します

  • 高洛峰

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

    レンダリング時にメッセージを定義する必要があります

    返事
    0
  • 阿神

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

    メッセージが定義されていません。レンダリングを確認するか、前のメッセージがあるかどうかを確認してください。

    返事
    0
  • 天蓬老师

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

    エラー レポートを見るとわかりますが、index.js
    ファイルの 14 行目にエラーがあります。ここでは、レンダリング インターフェイスがページのレンダリングに必要なメッセージ値を渡していません。
    > render にオブジェクト パラメータを追加し、メッセージの値を渡します

    以上です (˙-˙)

    返事
    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(エラー){
                req.flash('エラー', err);
                return res.redirect('/');
            }
            res.render('article', {//以下で定義されているものは、メッセージなどの ejs で受け取るものです
                タイトル: post.title、
                記事のタイトル: req.params.title、
                ポスト:ポスト、
                ユーザー: req.session.user、
                成功: req.flash('success').toString(),
                エラー: req.flash('error').toString()
            });
        });
    });

    article.ejs

    <article class="k-article">
          <h1><%= post.title %></h1>
          <%- post.post %>
          
    </article>

    返事
    0
  • 高洛峰

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

    ご回答いただきありがとうございます。最初は、次の 2 つのチュートリアルに従って高速ログイン機能を実装しましたが、結果はメッセージが定義されていませんでした。しかし、昨夜、2 つのチュートリアルを別々にやり直したところ、両方とも正常に実行されました。とてもがっかりしました。最初にチュートリアルを順を追って実行したところ、問題は解決したようです。再度ご回答いただきありがとうございます。 ??

    これら 2 つのチュートリアルは似ており、問題はありません
    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){
    これは上書きされています。気づくまでに 1 週​​間作業しました。誰かが私と同じかどうか見てみましょう。
    デフォルトでは、 // エラー ハンドラーに登録されています。はい、チュートリアルを読み、上記の「セッション構成」を
    app.use(express.static(path.join(__dirname, 'public'))) に書き直しましたが、結果は次のようになりました。以下は存在しませんでした。有効です。上記のみが有効になります。

    返事
    0
  • キャンセル返事