Плагин Docpad Contactify Проблема: 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, который это делает, поэтому я отчаянно пытаюсь заставить его работать. Любой вклад вообще будет оценен!


person RevisionZero    schedule 27.05.2014    source источник


Ответы (1)


Похоже, возникла проблема с contactify и версией docpad. У меня он работал под docpad 6.46, и все было в порядке. Когда я обновился до 6.66, contactify сломался. Кажется, есть два важных изменения. Контекст плагина, кажется, изменился, так что 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;
            ...

Версия кофескрипта:

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

                {server} = opts
                ...
person Steve Mc    schedule 27.05.2014