Nunjucks错误报告导入的文件



对于Nunjucks,我使用throwOnUndefined选项来查看在输出中使用未定义或null值的位置。

在我的代码结构中,我有一个主文件,并导入包含用于实际呈现输出的宏的文件。

我想在上报告错误,但错误总是在主文件上报告。无论是在我自己的代码中,还是在我使用例如nunjucks-cli时。

nunjucks-cli:示例

文件options.json:

{
"throwOnUndefined": true,
}

文件test.njk:

{% import "macro.njk" as doit %}
{{ doit.giveError("x") }}

文件macro.njk,由于写入y:的值而包含错误

{% macro giveError(x) %}
{{ y }} 
{% endmacro %}

Nunjucks突击队:

nunjucks test.njk --path . --options options.json

错误输出:

Template render error: (C:Qnunjucks-errorreportingtest.njk) [Line 1, Column 17]
Template render error: (C:Qnunjucks-errorreportingtest.njk) [Line 2, Column 4]
attempted to output null or undefined value

两个错误都在test.njk上报告。Line 1, Column 17上的第一个错误,但在这两个文件上,第17列没有相关性。第二个错误是Line 2, Column 4,它与在macro.njk文件中写入{{ y }}相匹配,但在test.njk上报告。

我在自定义代码中得到了相同的行为。

有没有一种方法可以在正确的文件上获得正确的错误报告,因为我有文件导入文件,导入其他文件。。。

更新:

根据输入Lesha Ogonkov,我在options.json中添加了"dev": true。这将产生以下输出:

Error: attempted to output null or undefined value
at new TemplateError (C:Qnunjucks-errorreportingnode_modulesnunjuckssrclib.js:89:17)
at Object.ensureDefined (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcruntime.js:242:11)
at Object.eval (eval at _compile (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcenvironment.js:631:18), <anonymous>:18:38)
at Object.giveError (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcruntime.js:131:17)
at Context.<anonymous> (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcruntime.js:259:23)
at Object.callWrap (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcruntime.js:273:14)
at eval (eval at _compile (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcenvironment.js:631:18), <anonymous>:13:88)
at C:Qnunjucks-errorreportingnode_modulesnunjuckssrcenvironment.js:613:9
at Template.root [as rootRenderFunc] (eval at _compile (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcenvironment.js:631:18), <anonymous>:29:1)
at Template.getExported (C:Qnunjucks-errorreportingnode_modulesnunjuckssrcenvironment.js:609:10) {
lineno: 2,
colno: 4,
firstUpdate: false,
Update: [Function: Update]
}

我仍然看不到与发生错误的文件的关系。

尝试在throwOnUndefined旁边设置dev标志。它是无证件的nunjucks功能,防止堆叠种族崩溃。

最新更新