TypeError 将 commonjs 'required' 函数传递给 Javascript 对象

TypeError passing a commonjs 'required' function into a Javascript Object

我正在使用第三方库(在 node.js 中),它通过 Javascript 对象接受函数作为参数:

  exports.paths = [
  {
    path:  "foo",
    parse: function bar(parm) {
        console.log("running function");
        return;
    }
  }

如果函数是内联的,那工作正常,但我想将它删除到一个单独的文件中 file_b

function bar(parm) {
  console.log("running function");
  return;
}
exports.bar = bar;

然后在file_a中要求它:

var bar = require('./file_b');
exports.paths = [
  {
    path:  "foo",
    parse: bar
  }

现在,当第三方库尝试 运行 我的函数时,出现错误:TypeError: object is not a function

我做错了什么?

您正在传递整个导出对象。但是你想通过 属性 bar.

var bar = require('./file_b').bar;

或者:

var bar = require('./file_b');
exports.paths = [{
    path:  "foo",
    parse: bar.bar
}]