我不确定这里发生了什么,但它一直困扰着我一段时间。 marked Node Markdown 解析器的工作方式如下:

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() 实现可能是造成这种情况的罪魁祸首?

有什么想法吗?

最佳答案

你说你切换到 kramed,一个 setOptionslooking at the definition 它返回一个 kramed 的实例。因此,在另一个文件中设置选项可能不会改变 kramedmain.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 });
}

关于javascript - 将模块函数传递给另一个文件中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36144500/

10-12 12:56
查看更多