我是Node.js的新手并试图弄清楚如何从单独的文件中请求一个对象(而不仅仅是请求一个函数),但是我尝试的所有内容 - exports
,module-exports
,等 - 失败了。
所以,例如,如果我有foo.js
:
var methods = {
Foobar:{
getFoo: function(){return "foo!!";},
getBar: function(){return "bar!!";}
}
};
module.exports = methods;
现在我想调用来自foo.js
的{{1}}对象中的函数:
index.js
我该怎么做?我尝试了var m = require('./foo');
function fooMain(){
return m.Foobar.getFoo();
};
和exports
的各种组合,但它们似乎只有在我调用不属于对象的离散函数时才有效。
答案 0 :(得分: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!!!!"; };
或者,正如您可能知道的那样,您可以使用函数替换它:
{{1}}
只有在导出后,您才能在其他模块中使用任何。