提问人:Phillip Feldman 提问时间:2/24/2023 更新时间:3/10/2023 访问量:49
我修复了ejs的一个奇怪的语法错误,我想知道问题是什么
I fixed a weird syntax error with ejs, and I'm wondering what the issue was
问:
我正在构建一个博客网页作为个人项目,作为学习 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 语法,那么是什么原因呢?
答:
3赞
Matt
2/24/2023
#1
该错误与 EJS 如何为标签生成 Javascript 代码有关,每个标签都以分号为前缀;
第一个例子相当于:
; if(firstp==="Welcome"){
; include('./partials/nav2.ejs')
; }
; else
; {
; include('./partials/nav.ejs')
; }
分号用于将 Javascript 语句与前一个标记分隔开来,但在本例中,分号结束语句。
在更常见的 JS 格式中,这是正在发生的事情:if
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')
; }
评论