2016-03-22 3 views
5

Я не совсем уверен, что здесь происходит, но это некоторое время прослушивало меня. marked узел уценки анализатор работает следующим образом:Передача функции модуля функции в другом файле

var marked = require('marked'); 
marked.setOptions({ mathjax : false }); 

, что все работы. Но я строй системы плагин, где я хочу передать отмеченную функцию модуля в функцию из другого файла и задать параметры в этой функции:

// main.js 
var marked = require('marked'); 
var plugin = require('./plugin'); 
plugin(marked); 
marked("# my markdown\n $$5 + 5$$", function(err, result) { 
    // this result still parses mathjax. Setting the option in the main 
    // file will disable mathjax. 
    console.log(result); 
}); 

// plugin.js 
module.exports = function(marked) { 
    marked.setOptions({ mathjax: false }); 
} 

marked функция корректно передаются моей функции плагина, и вызывается функция setOptions, но когда я использую marked в моем основном скрипте, параметры не заданы. Если я задаю параметры в главном скрипте, он работает.

Я немного не уверен, является ли marked являющимся Function и его реализация setOptions() может быть виновником этого?

Любые мысли?

+0

Как вы понимаете, что он не работает? –

+2

Что произойдет, если вы 'console.log (помечены)' в 'plugin.js'? –

+0

Это должно работать нормально, что-то еще должно продолжаться? – adeneo

ответ

0

Вы сказали, что перешли на kramed, looking at the definition из setOptions он возвращает экземпляр kramed. Поэтому настройка параметров в другом файле не может привести к изменению глобального экземпляра kramed в main.js. По крайней мере, переход на следующие работы:

// main.js 
var kramed = require('kramed'); 
var plugin = require('./plugin'); 
kramed = plugin(kramed); 
kramed("# my markdown\n $$5 + 5$$", function(err, result) { console.log(result); }); 

//plugin.js 
module.exports = function(kramed) { 
    return kramed.setOptions({ mathjax: false }); 
}