Проблема с плагином Docpad Проблема: документ не определен

Я пытаюсь заставить плагин Docpad Contactify работать так, как ожидалось, но мне не повезло, и я надеялся получить здесь некоторую помощь, если это вообще возможно.

Таким образом, рассматриваемый плагин - https://github.com/thaume/docpad-plugin-contactify и он не устанавливается должным образом через nom, поэтому я добавил его через /plugins/. Во всяком случае, при запуске его чистой, я получаю 'ReferenceError: docpad не определен', вызванный этой строкой...

    config = docpad.getConfig().plugins.contactify

поэтому я изменил это на...

config = @getConfig()

однако тогда я получаю следующую ошибку...

TypeError: Object function ContactifyPlugin() {
    return ContactifyPlugin.__super__.constructor.apply(this, arguments);
  } has no method 'getConfig'

Просто ищу способ отправки почты, и это единственный плагин Docpad, который делает это, поэтому я отчаянно отчаянно пытаюсь заставить его работать. Любой вклад будет приветствоваться!

1 ответ

Решение

Кажется, есть проблема с contactify и версией docpad. У меня он работал под docpad 6.46, и все казалось нормально. Когда я обновился до 6.66, contactctify сломался. Кажется, есть два соответствующих изменения. Контекст плагина, похоже, изменился, так что docpad больше не доступен напрямую в function(BasePlugin) контекст и сам Docpad больше не имеет getConfig метод (вместо этого вам нужно получить доступ к config собственность напрямую),

Перемещение оскорбительного кода внутри serverExtend Кажется, что метод исправляет проблему контекста, где сам docpad является свойством плагина this контекст.

    ContactifyPlugin.prototype.serverExtend = function(opts) {

            docpad = this.docpad;
            config = docpad.config.plugins.contactify;
            smtp = nodemailer.createTransport('SMTP', config.transport);
            var server;
            server = opts.server;
            ...

Версия Coffeescript:

        serverExtend: (opts) ->
                docpad = @docpad                    
                config = docpad.config.plugins.contactify
                smtp = nodemailer.createTransport('SMTP', config.transport)  

                {server} = opts
                ...
Другие вопросы по тегам