我正在构建一个个人项目的博客网页,作为学习Web开发的一种方式,我遇到了这个奇怪的语法错误.我修改了我的代码,以便登录和注销用户将获得不同的导航栏.以下代码导致错误:

<% if(firstp==="Welcome"){%>
        <%-include('./partials/nav2.ejs')%>
    <%}%>
    <%else%>
    <%{ %>
        <%-include('./partials/nav.ejs')%>
    <%  } %>

登录的用户获得NAV2,而注销的用户被发送到Else子句并参见NAV.已注销的用户收到以下错误:

编译ejs时C:\USERS\[密文]\Browse.ejs中的意外标记‘Else’

登录的用户将得到相同的错误,或者根据我如何编写我的ejs,将得到类似于"缺少圆括号"的信息(我忘记了复制错误以及如何准确地复制它).以下代码可以正常工作:

<% if(firstp==="Welcome"){%>
        <%-include('./partials/nav2.ejs')%>
    <%}else{ %>
        <%-include('./partials/nav.ejs')%>
    <%  } %>

两者都是有效的JavaScript语法,那么这是怎么回事呢?

推荐答案

该错误与ejs为标签生成代码的方式有关,每个标签用分号;分隔

第一个示例相当于:

; if(firstp==="Welcome"){
; include('./partials/nav2.ejs')
; }
; else
; {
; include('./partials/nav.ejs')
; }

分号用于分隔前一个标记中的Java语句,但在本例中,分号将结束if语句.在更常见的JS格式中,以下是正在发生的情况:

if(firstp==="Welcome"){
  include('./partials/nav2.ejs'); 
};
else;
{
  include('./partials/nav.ejs'); 
}

该工作示例仅在if语句圆括号{}内插入分号,而不会终止if语句

; if(firstp==="Welcome"){
; include('./partials/nav2.ejs')
; } else {
; include('./partials/nav.ejs')
; }

Html相关问答推荐

CSS动画积分计数器

Chrome中是否有一个本地显示密码功能,用于`input type = password/`?""<"">

如何将FlexBox项目zoom 到其包含图像的大小

将ANGLE模板高效地迁移到ANGLE 17中引入的新语法

为什么不是所有字体好的图标都能与boostRapCDN一起使用呢?

Bootstrap 5.3.2模式页脚左填充还是左边距?

HX-POST未使用正确的操作(路径)

使用bash从html表格中提取表格

rvest: Select 不包含链接的段落(<;p>;)

为什么 CSS 网格超出了父级?

四开将一个 qmd 文档中的单词链接到另一个 qmd 文档中的单词

悬停时宽度从 0 过渡到自动

使用修饰键微调 HTML 输入范围中的值

如何使用 Bootstrap Grid 系统修复大屏幕上图片和进度条之间的空白?

将图像高度调整到容器 div 中而不使其高度增加

按钮显示:内联不换行

是否可以为长 huxtable 固定头部?

在身体外部创建 tanget 45° div

在 html 邮箱的左侧和右侧制作多个元素很热门吗?

下拉菜单项在页面加载时显示,需要隐藏直到悬停