【发布时间】:2013-10-05 17:00:30
【问题描述】:
我有一个基本问题如下:
我在同一个目录中有 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');
但节点坚持认为Logger 没有名为init 或log 的方法。我也尝试了require('./logger.js')(),因为我传递了一个返回 self 对象的函数,但它没有帮助。在其他模块中定义对象并导出它们的最佳实践是什么?顺便说一句,它恰好可以这样做:
var logger = require('./logger.js');
var l = new logger();
l.init('MAIN');
l.log('bar');
但是对我来说这似乎很笨拙。有什么解释和建议吗?
【问题讨论】:
标签: javascript node.js oop logging