【问题标题】:Passing module function to a function in another file将模块函数传递给另一个文件中的函数
【发布时间】:2016-07-08 18:09:18
【问题描述】:

我不确定这里发生了什么,但它已经困扰了我一段时间。 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() 的实现是否可能是罪魁祸首?

有什么想法吗?

【问题讨论】:

  • 你怎么理解它不起作用?
  • 如果您在plugin.js 中console.log(marked) 会发生什么?
  • 这应该可以正常工作,一定是发生了其他事情吗?
  • 描述“不工作”。你有错误吗? marked 函数参数是否有一些意想不到的值?运行脚本时计算机显示器是否关闭?
  • 我更新了问题以指定什么不起作用:标记正在传递给我的插件,我可以正确调用 setOptions 函数,但是当我之后在我的主脚本中使用 kramed 时,未设置选项.也许这与 kramed 的编写方式有关?当我 console.log kramed 时,它是 typeof 函数。

标签: javascript node.js javascript-marked


【解决方案1】:

您说您切换到 kramed,looking at the definition 的 setOptions 返回一个 kramed 的实例。因此在另一个文件中设置选项可能不会改变main.js 中的kramed 的全局实例。至少改成以下作品:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2021-08-02
    • 2019-07-25
    • 2021-04-22
    • 2020-01-20
    • 2014-01-06
    相关资源
    最近更新 更多