parseAggregate: expected comma after expression

1,365 views
Skip to first unread message

Sudhir Jena

unread,
Nov 24, 2015, 11:22:31 AM11/24/15
to Nunjucks

I am just starting off using nunjucks in a stater sails app. As you are aware sails uses consolidate.js to support nunjucks.

 

Attached is my basic 404 page.

 

Whenever I try to trigger the page. I get the following error.

 

warn: res.notFound() :: When attempting to render error page view, an error occured (sending JSON instead).  Details:  Template render error: (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\views\404.nunjucks) [Line 57, Column 14]

  parseAggregate: expected comma after expression

    at Object.exports.prettifyError (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\lib.js:34:15)

    at Obj.extend.render (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:468:27)

    at C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:311:35

    at createTemplate (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:234:25)

    at handle (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:249:25)

    at C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:263:21

    at next (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\lib.js:207:13)

    at Object.exports.asyncIter (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\lib.js:214:5)

    at Obj.extend.getTemplate (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:242:17)

    at Obj.extend.render (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:303:14)

    at NunjucksView.render (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\node_modules\nunjucks\src\environment.js:284:15)

    at Function.app.render (C:\Users\sudhir.jena\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\application.js:523:10)

    at ServerResponse.res.render (C:\Users\sudhir.jena\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\response.js:827:7)

    at ServerResponse._addResViewMethod.res.view (C:\Users\sudhir.jena\AppData\Roaming\npm\node_modules\sails\lib\hooks\views\res.view.js:237:16)

    at Object.notFound (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\api\responses\notFound.js:61:19)

    at ServerResponse.bound [as notFound] (C:\Users\sudhir.jena\AppData\Roaming\npm\node_modules\sails\node_modules\lodash\dist\lodash.js:729:21) { [Template render error: (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\views\404.nunjucks) [Line 57, Column 14]

  parseAggregate: expected comma after expression] name: 'Template render error' }

 

The line hinted in the error is as follows:

 

            {% if (typeof error!== 'undefined') %}

          {{ error }}

          {% else %}

          The page you were trying to reach doesn't exist.

          {% endif %}


Can anyone help me with the fix for this error? 


Thanks and Regards

Sudhir Jena

404.nunjucks

Carl Meyer

unread,
Dec 16, 2015, 12:55:57 AM12/16/15
to Nunjucks
Hi Sudhir,


On Tuesday, November 24, 2015 at 9:22:31 AM UTC-7, Sudhir Jena wrote:

I am just starting off using nunjucks in a stater sails app. As you are aware sails uses consolidate.js to support nunjucks.

 

Attached is my basic 404 page.

 

Whenever I try to trigger the page. I get the following error.

 

warn: res.notFound() :: When attempting to render error page view, an error occured (sending JSON instead).  Details:  Template render error: (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\views\404.nunjucks) [Line 57, Column 14]

  parseAggregate: expected comma after expression

[snip]
 
[Template render error: (C:\Users\sudhir.jena\Documents\Projects\node projects\try-jamvee\views\404.nunjucks) [Line 57, Column 14]

  parseAggregate: expected comma after expression] name: 'Template render error' }

 

The line hinted in the error is as follows:

 

            {% if (typeof error!== 'undefined') %}

          {{ error }}

          {% else %}

          The page you were trying to reach doesn't exist.

          {% endif %}


Can anyone help me with the fix for this error? 


The problem is that you are trying to use the JS `typeof` operator in your nunjucks template, and nunjucks can't parse it. Nunjucks is not JS, you can't just embed JS operators arbitrarily in your template.

The idiomatic nunjucks way to handle this would be to just say `{% if error %}`. That would also show the default message if `error` is null or the empty string, in addition to being undefined. That's probably fine. If it's not fine for you, you could write a custom `typeof` filter that just returns the JS type of the given object, and then write your template like `{% if error|typeof !== 'undefined' %}`.

Carl
Reply all
Reply to author
Forward
0 new messages