Javascript 在Node.JS中,如何从单独的.JS文件返回整个对象?

Javascript 在Node.JS中,如何从单独的.JS文件返回整个对象?,javascript,json,node.js,Javascript,Json,Node.js,我是Node.js的新手,正在尝试了解如何从单独的文件中请求对象(而不仅仅是请求函数),但我尝试的一切--导出,模块导出,等等--都失败了 例如,如果我有foo.js: var methods = { Foobar:{ getFoo: function(){return "foo!!";}, getBar: function(){retur

我是Node.js的新手,正在尝试了解如何从单独的文件中请求对象(而不仅仅是请求函数),但我尝试的一切--
导出
模块导出
,等等--都失败了

例如,如果我有
foo.js

    var methods = {
                   Foobar:{
                            getFoo: function(){return "foo!!";},
                            getBar: function(){return "bar!!";}
                   }
                  };
module.exports = methods;
var m = require('./foo');  
function fooMain(){
  return m.Foobar.getFoo();
};
现在我想从
index.js
调用
foo.js
对象中的函数:

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

我该怎么做?我尝试了
导出
模块导出
的各种组合,但它们似乎只有在我调用不属于对象的离散函数时才起作用。

您说您尝试了
导出
,但您的代码没有显示出来。您希望从模块外部可见的任何内容都必须分配给(或从)
模块。导出
。在您的情况下,如果已经有一个对象,您可以将其分配给
模块。导出

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!!!!"; };

只有在导出后,您才能在其他模块中使用任何内容。

谢谢!为了确保我理解,我需要显式导出对象的每个部分(例如:
module.exports.Foobar.getFoo
)?我试图只导出整个对象,然后使用点符号从
index.js
访问它的组成部分。@MatthewPatrickCashatt:不,不需要单独执行。正如我所说,
module.exports
只是一个普通对象。因此,是的,您可以将
方法
对象分配给它,一切都会顺利进行。我将修改我的答案,使之更加明确。