0

私は Express、EJS、および mongoose を Web サイトの学習演習に使用しています。

ここに私のindex.jsモジュールがあります:

blog_model = require('./connection').blog_model;
/*
 * GET home page.
*/

exports.index = function(req, res)
{

  var rubric, url, logout, tunes;

  if(req.user != null)
  {
    url='/internal_index';
    rubric='To the backroom, ' + req.user.fullName;
    logout='logout';
  }
  else
  {
    url='/login';
    rubric='login';
    logout='';
  }

  blog_model.find(({}, function(err, tunes) 
  {
    console.log('tunes: ' + tunes)

    res.render('index', { title: 'blah', 
                        url : url, 
                        rubric : rubric,
                        logout : logout
                    });
  }))
};

次のエラーが表示されます。

SyntaxError: Unexpected token for
    at Object.Function (<anonymous>)
    at exports.compile (/Users/chrisaugier/Web/frontRoom/node_modules/ejs/lib/ejs.js:234:12)
    at Object.exports.render (/Users/chrisaugier/Web/frontRoom/node_modules/ejs/lib/ejs.js:273:10)
    at View.exports.renderFile [as engine] (/Users/chrisaugier/Web/frontRoom/node_modules/ejs/lib/ejs.js:303:22)
    at View.render (/Users/chrisaugier/Web/frontRoom/node_modules/express/lib/view.js:75:8)
    at Function.app.render (/Users/chrisaugier/Web/frontRoom/node_modules/express/lib/application.js:506:10)
    at ServerResponse.res.render (/Users/chrisaugier/Web/frontRoom/node_modules/express/lib/response.js:756:7)
    at Promise.<anonymous> (/Users/chrisaugier/Web/frontRoom/routes/index.js:28:9)
    at Promise.<anonymous> (/Users/chrisaugier/Web/frontRoom/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8)

しかし、データベースへのクエリは機能しています。

どんな助けでも大歓迎です。

クリス

編集

以下は、私の EJS テンプレート コードです。潜在的な問題の部分は、最近追加された for ループです。ただし、最初に試したのはこれをコメントアウトすることで、同じエラーが引き続き発生しました。

<!DOCTYPE html>
<html>
  <head>
    <title>title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel='stylesheet' type="text/css" href="stylesheets/grid.css"/>
<link rel='stylesheet' type="text/css" href="stylesheets/normalize.css"/>
<link rel='stylesheet' type="text/css" href="stylesheets/style.css"/>
  <body>
   <div class="loginbar">
      <a href="<%= url%>"><%= rubric%></a>
      <a href='/logout'><%= logout%></a>
    </div>
    <div class="slide" id="slide1" data-slide="1" data-stellar-background-ratio="0.5">
      <div class="container clearfix">
        <div id="header" class="grid_7">
          <h1>frontRoom</h1>
          <h2>...don't go in the back room.</h2>
          <p><i>"Let " </i> - Bagehot</p>
        </div>
        <ul class="navigation">
          <li data-slide="1">Tunes</li>
          <li data-slide="2">Collaborators</li>
          <li data-slide="3">Blog</li>
          <li data-slide="4">About</li>
        </ul>
      </div>
    </div>
    <div class="slide" id="slide2" data-slide="2" data-stellar-background-ratio="0.5">
      <div class="container clearfix">
        <h1>Tunes</h1>
        <h2>Latest reviews</h2>
        <%= for (vari=0;i<tunes.length;i++){%>
        <div class="grid_5">
          <h3><%= tunes[i].title %></h3>
          <p><%= tunes[i].body %></p>
        </div>
        <%= }%>
      </div>
    </div>
    <div class="slide" id="slide3" data-slide="3" data-stellar-background-ratio="0.5">
      <div class="container clearfix">
        <h1>Collaborators</h1>
        <div class="grid_3">
          <h2>blah</h2>
          <p>Lore.</p>
        </div>
        <div class="grid_3">
          <h2>blah/h2>
          <p>Loremnim. </p>
        </div>
        <div class="grid_3">
          <h2>Cblah</h2>
          <p>Sed pretiagna eu.</p>
        </div>
      </div>
    </div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.stellar.min.js"></script>
    <script type="text/javascript" src="js/waypoints.min.js"></script>
    <script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
    <script type="text/javascript" src="js/scripts.js"></script>
  </body>
</html>
4

2 に答える 2

2

問題は for ループの構文でした。equals を必要としない行に誤って equals を追加してしまいました。

<%= for( var i=0; i<tunes.length; i++) { %>
<%= } %>

なる:

<% for( var i=0; i<tunes.length; i++) { %>
<% } %>

そして動作します。

問題の原因に注意を向けてくれた Andrew に感謝します。

于 2013-05-16T19:42:27.550 に答える