4

我不确定这里发生了什么,但它一直困扰着我一段时间。节点降价解析器的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作为 aFunction及其实现是否setOptions()可能是罪魁祸首?

有什么想法吗?

4

1 回答 1

0

你说你切换到 kramed,查看它的定义setOptions返回一个kramed. kramed因此,在另一个文件中设置选项可能不会改变in的全局实例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 });
}
于 2016-03-22T16:31:56.223 回答