Использование глобальной функции (нунджаки) в записи Markdown

Я пытаюсь использовать функцию Nunjucks, которую я создал для публикации Markdown в Hexo, но я не могу заставить ее работать.

Я использую hexo-renderer-njcks и hexo-renderer-marked и добавил такую ​​глобальную функцию:

hexo.extend.filter.register('before_render:nunjucks', function SplitFilter (env) {
    env.addGlobal('render_img_tag', function (path) {
        return '<img src="' + path + '" />';
    })
})

Когда я проверяю env.globals, функция присутствует правильно, но когда я пытаюсь сгенерировать файлы, я получаю следующую ошибку:

Nunjucks Error:  [Line 3, Column 12] Error: Unable to call `render_img_tag`, which is undefined or falsey
    =====             Context Dump Ends            =====
    at formatNunjucksError (/home/user/www/dsite.com/node_modules/hexo/lib/extend/tag.js:102:13)
    at Promise.fromCallback.catch.err (/home/user/www/dsite.com/node_modules/hexo/lib/extend/tag.js:124:34)
    at tryCatcher (/home/user/www/dsite.com/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/user/www/dsite.com/node_modules/bluebird/js/release/promise.js:517:31)
    at Promise._settlePromise (/home/user/www/dsite.com/node_modules/bluebird/js/release/promise.js:574:18)
    at Promise._settlePromise0 (/home/user/www/dsite.com/node_modules/bluebird/js/release/promise.js:619:10)
    at Promise._settlePromises (/home/user/www/dsite.com/node_modules/bluebird/js/release/promise.js:695:18)
    at _drainQueueStep (/home/user/www/dsite.com/node_modules/bluebird/js/release/async.js:138:12)
    at _drainQueue (/home/user/www/dsite.com/node_modules/bluebird/js/release/async.js:131:9)
    at Async._drainQueues (/home/user/www/dsite.com/node_modules/bluebird/js/release/async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/user/www/dsite.com/node_modules/bluebird/js/release/async.js:17:14)
    at processImmediate (timers.js:632:19)

Как мне это сделать?

(Примечание: я могу изменить модули, если это необходимо).


person Cyril N.    schedule 17.09.2019    source источник


Ответы (1)


Не знаю, хак это или рабочее решение, но... ну... оно работает!

В вашем файле «script.js» в вашей теме вы можете сделать следующее, чтобы добавить глобальные функции:

hexo.extend.tag.env.addGlobal('render_img_tag', function (path) {
    return '<img src="' + path + '" />';
})
person Cyril N.    schedule 18.09.2019