How can I comment the EJS code (JS node) without getting an error
Asked Answered
D

6

34

I have this code in an EJS file:

<table>
<% for(var i=0; i < data.length; i++) { %>
   <tr>
     <td><%= data[i].id %></td>
     <td><%= data[i].name %></td>
   </tr>
<% } %>
</table>

When I comment it this way,

<!-- <table> -->
<!-- <% for(var i=0; i < data.length; i++) { %> -->
<!--    <tr> -->
<!--      <td><%= data[i].id %></td> -->
<!--      <td><%= data[i].name %></td> -->
<!--    </tr> -->
<!-- <% } %> -->
<!-- </table> -->

I still have an error in Line 2. Here is the stack of the error:

ReferenceError: c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\views\x.ejs:2
   1| <!-- <table> -->
>> 2| <!-- <% for(var i=0; i < data.length; i++) { %> -->
   3| <!--    <tr> -->
   4| <!--      <td><%= data[i].id %></td> -->
   5| <!--      <td><%= data[i].name %></td> -->

data is not defined
   at eval (eval at <anonymous> (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:455:12), <anonymous>:11:25)
   at c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:482:14
   at View.exports.renderFile [as engine] (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\ejs\lib\ejs.js:348:31)
   at View.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\view.js:93:8)
   at EventEmitter.app.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\application.js:566:10)
   at ServerResponse.res.render (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\response.js:938:7)
   at c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\todoList.js:13:6
   at Layer.handle [as handle_request] (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\layer.js:82:5)
   at next (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\route.js:110:13)
   at Route.dispatch (c:\Users\toumi\Desktop\workspaces\eclipse\ToDoList\node_modules\express\lib\router\route.js:91:3)

How can I comment this code?

Diatropism answered 21/3, 2015 at 8:12 Comment(1)
Please add what error you are receiving. I tried adding <!-- --> in ejs and i am not receiving any error.Shorthanded
E
49

There is two solutions:

  • <%# comment %> (it's from documentation)
  • <%/* comment */%> (it works too, but it's pretty ugly and uncomfortable for use)

I don't see a difference between those examples except highlighting syntax in an IDE (example with the Brackets IDE).

Enter image description here

Emblaze answered 4/10, 2016 at 8:41 Comment(0)
M
35

Sample of the <% /* */ %> format for multi-line.

<% /* %>
<div>
    <span>This will not be rendered</span>
    <% for(var i=0; i < data.length; i++) { %>
      <span>These won't be rendered either.</span>
    <% } %>
</div>
<% */ %>
Mccrary answered 18/3, 2017 at 6:4 Comment(3)
This is the good answer to the question. The questioner clearly needed multiline comment with ejs tags inside that, and neither <%# ... %> nor <% /* ... */ %> (in this exact form) doesn't work in that case.Ignominy
it's not working when there's variable <%= var %> inside itCzarina
When using ejs-loader with webpack, it works for single line and multi-line comments.Vacuous
E
11

There are two ways to do it!

As mentioned in the documentation of EJS:

<%# commented out code %>

<%/* multiple lines commented out code*/%>

For example:

<%# include('includes/head.ejs') %>
</head>

<body>
    <%# include('includes/navigation.ejs') %>
    <h1>Page Not Found!</h1>

<%- include('includes/end.ejs') %>
Exorbitant answered 8/1, 2019 at 17:42 Comment(0)
C
10

It says here about the comments as well that you can comment like below:

 <%# code %>
Caterina answered 21/3, 2015 at 8:21 Comment(0)
S
5

I found this helpful for me. It's simple, multiline and does not conflict with anything.

    <%if(false) {%>  
        <ul>
        <% for(var i =1; i <= 10; i++) { %>
            <li>
                Hello this is iteraiton <%=i %>
            </li>
        <% }%>
        </ul>
        <%- include('./meow') %> 
    <%} %>
Stramonium answered 18/12, 2016 at 19:37 Comment(0)
C
0

Here is one way to comment out ejs code:

Given this line of code:

<label for="<%= user.id %>" style="background-color: <%= user.color %>;">

I did this:

<!--label for="<%#= user.id %>" style="background-color: <%#= user.color %>;"-->

Alternatively: Original code:

<label for= <%=`${user.id}` %> style= <%=`background-color: ${user.color};`%>>

Commented out code:

<!--label for= <%#=`${user.id}` %> style= <%#=`background-color: ${user.color};`%> -->
Catharine answered 4/12, 2023 at 17:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.