3

我是 Node.js 的新手,并试图弄清楚如何从一个单独的文件中请求一个对象(而不仅仅是请求一个函数),但我尝试的一切- exportsmodule-exports等等 - 都失败了。

因此,例如,如果我有foo.js

    var methods = {
                   Foobar:{
                            getFoo: function(){return "foo!!";},
                            getBar: function(){return "bar!!";}
                   }
                  };
module.exports = methods;

现在我想在foo.jsfrom的对象中调用一个函数index.js

var m = require('./foo');  
function fooMain(){
  return m.Foobar.getFoo();
};

我该怎么做呢?我已经尝试了各种组合,exportsmodule-exports它们似乎只有在我调用不属于对象的离散函数时才有效。

4

1 回答 1

5

你说你试过了exports,但你的代码没有显示出来。您希望从模块外部可见的任何内容都必须分配给(或以其他方式引用)module.exports。在您的情况下,您已经有一个对象,您可以将其分配给module.exports

var methods = {
    ...
};

// You must export the methods explicitly
module.exports = methods;

module.exports不是魔法,它是一个普通的物体,你可以这样对待它。这意味着您可以将您的方法直接分配给它,如下所示:

module.exports.Foobar = {};
module.exports.Foobar.getFoo = function() { ... };
...

或者,您可能知道,您可以用一个函数替换它:

module.exports = function() { return "It's ALWAYS over 9000!!!!"; };

只有在导出之后,您才能在另一个模块中使用任何东西。

于 2012-08-30T15:46:25.770 回答