代码之家  ›  专栏  ›  技术社区  ›  duruburak

EJS错误:找不到“<%”的匹配结束标记

  •  0
  • duruburak  · 技术社区  · 2 年前

    我试着理解我跳过了什么。对我来说,这一切似乎都是正确的,但我试图编写的代码是嵌套的,有点复杂,所以我显然对EJS有些不了解。 posts 已经从node.js传递了EJS文件。如何修复此代码?

    <%  for (let i = 0; i < posts.length; i++) {
              let imageSrcs = [];
              for (let j = 0; j < posts[i].images.length; j++) {
                let imageSrc = "data:image/<%= posts[i].images[j].image.contentType %>;base64,\>
                            <% posts[i].images[j].image.data.toString('base64') %>";
                imageSrcs.push(imageSrc);
              }
        %>
            initializeSlider($(".slider-<%= i+1 %>"), <%= imageSrcs %>);
        <% } %>
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Geshode    2 年前

    不能使用嵌套的ejs标记。按照目前的方式,第一个标记使用第一个结束标记(后面的一个 .contentType )关闭,因此还有一个额外的关闭标签,因为第二个打开标签被忽略了。

    将代码更改为以下内容应该可以解决您的问题。

    <%  for (let i = 0; i < posts.length; i++) {
        let imageSrcs = [];
        
        for (let j = 0; j < posts[i].images.length; j++) {
            let imageSrc = `data:image/${posts[i].images[j].image.contentType};base64,\>
                ${posts[i].images[j].image.data.toString('base64')}`;
            imageSrcs.push(imageSrc);
        }%>
        
        initializeSlider($(".slider-<%= i+1 %>"), <%= imageSrcs %>);
        
    <% } %>