-
Notifications
You must be signed in to change notification settings - Fork 650
[API]Circular references in templates causes "RangeError: Maximum call stack size exceeded" error #1522
Copy link
Copy link
Open
Description
Description
If two templates reference one another, nunjucks.render() fails with the following error:
/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/lib.js:32
err = new Error(old.message);
^
Template render error: (/private/tmp/nunjucks_circular_dependency_test/a.njk)
Template render error: (/private/tmp/nunjucks_circular_dependency_test/a.njk)
Template render error: (/private/tmp/nunjucks_circular_dependency_test/a.njk)
...
...line repeats ~1,500 times
...
RangeError: Maximum call stack size exceeded
at Object._prettifyError (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/lib.js:32:11)
at /private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:464:19
at Template.root [as rootRenderFunc] (eval at _compile (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:527:18), <anonymous>:23:3)
at Template.render (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:454:10)
at /private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:301:27
at createTemplate (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:254:9)
at handle (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:265:11)
at /private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/environment.js:276:9
at next (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/lib.js:258:7)
at Object.asyncIter (/private/tmp/nunjucks_circular_dependency_test/node_modules/nunjucks/src/lib.js:263:3)
Node.js v24.2.0
How to reproduce
- Unzip the following [small, minimal] project
nunjucks_circular_dependency_test.zip cd nunjucks_circular_dependency_testnpm installnpm test
Expected behavior
- The
Error#messageshould be concise and descriptive (i.e. not 1,500 lines long!) - It should describe the problem (circular dependency between templates). Ideally it would describe all of the templates involed in the dependency. (e.g. "Circular dependency detected: a.njk -> b.njk -> a.njk".
- It should contain appropriate
linenoandcolnoproperties.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels