【问题标题】:strange ejs syntax error奇怪的ejs语法错误
【发布时间】:2019-01-28 15:06:25
【问题描述】:

我是node.js 的新手,并跟随博客练习。但是当我来渲染博客中所写的视图时。我遇到了一些奇怪的问题。

我将ejs 用作expresssignup.ejs 中的视图引擎,就像这样

<%- include('header') %>
  <div class="ui grid">
  <div class="four wide column"></div>
  <div class="eight wide column">
   <form class="ui form segment" method="post" enctype="multipart/form-data">
    <div class="field required">
      <label>username</label>
      <input placeholder="username" type="text" name="name">
    </div>
    <div class="field required">
      <label>password</label>
      <input placeholder="password" type="password" name="password">
    </div>
    <div class="field required">
      <label>repeat password</label>
      <input placeholder="password" type="password" name="password">
    </div>
    <div class="field required">
      <label>sex</label>
      <select class="ui compact selection dropdown" name="gender">
        <option>m</option>
        <option>f</option>
        <option>x</option>
      </select>
    </div>
    <div class="field required">
      <label>avatar</label>
      <input type="file" name="avatar">
    </div>
    <div class="field required">
      <label>bio</label>
      <textarea name="bio" rows="5" v-model="user.bio"></textarea>
    </div>
  </form>
</div>

当我运行启动程序并在 pathlocalhost:3000/signup 中发送 http 请求时,我遇到了一些错误

SyntaxError: 
C:\Users\ct\Documents\mycode\nodestudy\formalblog\views\signup.ejs:1
 >> 1| <%- include('header') %>
    2| <div class="ui grid">
    3|   <div class="four wide column"></div>
    4|   <div class="eight wide column">

C:\Users\ct\Documents\mycode\nodestudy\formalblog\views\header.ejs:13
    11|   <body>
    12|     <%- include('components/nav') %>
 >> 13|     <%- include('components/nav-setting') %>
    14|     <%- include('components/notification') %>
Unexpected token if in         C:\Users\ct\Documents\mycode\nodestudy\formalblog\views\components\nav-setting.ejs while compiling ejs

我检查了文件路径以及我的node version is v7.2.0 for winejs version 2.5.6。我已经阅读了 ejs 的文档,但我不知道错误信息 syntax error

更新:在nav-setting.ejs中显示内容,感谢您提醒我真正发生错误的地方。

<div class="nav-setting">
  <div class="ui buttons">
    <div class="ui floating dropdown button">
      <i class="icon bars"></i>
    <div class="menu">
      <%= if (user) { %>
        <a class="item" href="/posts?author=<%= user._id %>">index</a>
        <div class="divider"></div>
         <a class="item" href="/posts/create">post</div>
         <a class="item" href="/signout">logout</a>
      <% } else { %>
         <a class="item" href="/signin">login</a>
         <a class="item" href="/signup">signup</a>
      <% } %>
    </div>
  </div>
</div>

【问题讨论】:

  • 根据工具,您的错误实际上在nav-settings.ejs 文件中。剩下的只是指出为什么其他文件编译失败(因为他们直接或间接使用了那个nav-settings.ejs文件)。
  • 显示 nav-setting.ejs 的内容(在文件夹 C:\Users\ct\Documents\mycode\nodestudy\formalblog\views\components\ 中)
  • 我已经在nav-setting.ejs添加了内容,谢谢你的评论。
  • 让我猜猜,&lt;%= ... &gt; 期望一个表达式插入到文档中。

标签: node.js express ejs


【解决方案1】:

感谢对这个简单问题发表评论的人。

正如@user268396 和@Sangharsh 所说,错误发生在nav-setting.ejs 而不是signup.ejs。在我检查了nav-setting.ejs 之后,我发现&lt;%= if(user) {%&gt; 在ejs 中是错误的语法。此处应使用&lt;% if(user) { %&gt;

&lt;% %&gt;&lt;%= %&gt;都是用来控制文档的,但是不会产生输出,所以应该是正确的选择。

再次感谢您的回答。

【讨论】:

  • &lt;%= %&gt; || &lt;%- %&gt; 将期望产生一个值,但 &lt;% %&gt; 用于表达式
猜你喜欢
  • 2014-04-14
  • 2013-09-03
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多