Nunjucks - 找出哪个模板文件导致 "template render error"

Nunjucks - find which template file causes "template render error"

我正在通过 Node+Express 渲染 Nunjucks。

我有很多观点,突然我的一个观点抛出了一个错误,下面的堆栈跟踪。

如何找出哪个模板或 helper/macro 错误源自?

"Template render error: Template render error: Template render error: Template render error: TypeError: Cannot read property 'height' of null at Object._prettifyError (/code/node_modules/nunjucks/src/lib.js:35:11) at /code/node_modules/nunjucks/src/environment.js:547:19 at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:151:12) at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:57:12) at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:46:11) at /code/node_modules/nunjucks/src/environment.js:555:11 at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:155:12) at /code/node_modules/nunjucks/src/environment.js:555:11 at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:105:12) at /code/node_modules/nunjucks/src/environment.js:555:11 at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:11:11) at /code/node_modules/nunjucks/src/environment.js:597:9 at Template.root [as rootRenderFunc] (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:188:3) at Template.getExported (/code/node_modules/nunjucks/src/environment.js:595:10) at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:10:5) at Environment.getTemplate (/code/node_modules/nunjucks/src/environment.js:263:9) at Template.root [as rootRenderFunc] (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:8:5) at Template.render (/code/node_modules/nunjucks/src/environment.js:540:10) at eval (eval at _compile (/code/node_modules/nunjucks/src/environment.js:617:18), <anonymous>:104:10) at fn (/code/node_modules/a-sync-waterfall/index.js:26:24) at /code/node_modules/a-sync-waterfall/index.js:66:22 at executeSync (/code/node_modules/a-sync-waterfall/index.js:8:15)"

正如 Aikon Mogwai 在评论中所建议的那样,所有这些都是关于在 node_modules/nunjucks/src/environment.js 中添加控制台登录。

  1. 对于 viewhelpers 最好在行 547 处执行 console.log(err, _Obj3)(在 this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err, res) { 中的捕获内)

  2. 对于 .njk 中的错误,最好在 526 处执行 console.log(this);(在 _proto3.render = function render(ctx, parentFrame, cb) { 中的捕获内)

记录的对象将包含以下有用的属性

  • filename -> 导致错误的文件的绝对路径
  • tmplStr -> 在错误发生之前它可以解析的那个文件的所有内容
  • 一堆上下文对象,例如包含当时存在的所有 Nunjucks 全局变量和过滤器