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

Mat*_*att 3 javascript json node.js

我是新来的Node.js和试图找出如何从一个单独的文件(而不是仅仅要求一个函数),但一切我try--请求对象exports,module-exports等等-失败.

所以,例如,如果我有foo.js:

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

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

var m = require('./foo');  
function fooMain(){
  return m.Foobar.getFoo();
};
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我已经尝试了各种组合的exportsmodule-exports,但他们似乎如果我叫离散函数是不是一个对象的一部分才能正常工作.

voi*_*hos 5

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

var methods = {
    ...
};

// You must export the methods explicitly
module.exports = methods;
Run Code Online (Sandbox Code Playgroud)

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

module.exports.Foobar = {};
module.exports.Foobar.getFoo = function() { ... };
...
Run Code Online (Sandbox Code Playgroud)

或者,正如您可能知道的那样,您可以使用函数替换它:

module.exports = function() { return "It's ALWAYS over 9000!!!!"; };
Run Code Online (Sandbox Code Playgroud)

只有在导出后,您才能在另一个模块中使用任何内容.