将模块函数传递给另一个文件中的函数

我不确定这里发生了什么,但是一直在困扰着我。 marked节点markdownparsing器的工作原理是这样的:

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

这一切工作。 但是,我正在build立一个插件系统,我想将标记的模块函数从另一个文件传递到函数中,并在该函数中设置选项:

 // 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()可能是这个罪魁祸首?

有什么想法吗?

你说你换了kramed, 看着 setOptions 的定义 ,它返回一个kramed的实例。 因此,在另一个文件中设置选项可能不会突变kramed中的全局实例main.js 。 至less改为以下作品:

 // 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 }); }