我有一些过滤器:
var jade = require('jade');
jade.filters.Posts = function(block) {
return '{block:Posts}'+jade.render(block)+'{/block:Posts}';
};
jade.filters.Audio = function(block) {
return '{block:Audio}'+jade.render(block)+'{/block:Audio}';
};
jade.filters.Video = function(block) {
return '{block:Video}'+jade.render(block)+'{/block:Video}';
};
并有一些输入
:Posts
Posts
:Audio
| Audio
:Video
| Video
所以我有一个错误:
>> unknown filter ":Audio"
我可以处理或解决这个问题吗?
PS你可以查看这个存储库中的代码——我正在使用 grunt 和 grunt-contrib-jade 插件,但是要强制 grunt-contrib-jade 使用过滤器,你应该编辑 ./node_modules/grunt-contrib-jade/tasks/ Jade.js 以反映来自此拉取请求的更改。
PS2:我找到了绊脚石。当我render()
在过滤器中使用方法时,我从本地翡翠实例调用它,它对过滤器一无所知,但全局翡翠实例(来自 Gruntfile.js)具有有关该过滤器的所有信息。这就是为什么主要问题是:如何将全局 Jade-instance 扔到带有过滤器的文件中?
PS3:我不知道如何为这种情况创建小提琴。但是您可以克隆我的Hampi 存储库,从我的 PR 对 grunt-contrib-jade 进行更改,然后在开始运行npm i
。要编译模板运行grunt jade
. 注意body.jade中的这些行和过滤器中的注释部分。
PS4。我发现原因和它在不同的范围内。我在这里详细描述它。你能解决这个问题吗?
我愿意接受额外的答案,我会接受翡翠核心的修复(如果需要的话)。