我有一个基本问题如下:
我在同一个目录中有 2 个单独的模块 main.js 和 logger.js。logger.js 很简单:
function Logger(){
return this;
};
Logger.prototype.log = function(str) {
console.log('[' + this.mPrefix + ']' + str);
};
Logger.prototype.init = function(pr){
this.mPrefix = pr;
}
module.exports = Logger;
现在,我想在主模块中使用我的记录器,如下所示:
var logger = require('./logger.js');
logger.init('MAIN');
logger.log('foo');
但 node 坚持认为Logger
没有名为init
or的方法log
。我也试过require('./logger.js')()
了,因为我传递了一个返回 self 对象的函数,但它没有帮助。在其他模块中定义对象并导出它们的最佳实践是什么?顺便说一句,它恰好通过这样做起作用:
var logger = require('./logger.js');
var l = new logger();
l.init('MAIN');
l.log('bar');
然而,这对我来说似乎很笨拙。有什么解释和建议吗?