TypeError:对象函数…没有方法'on'

我是node.js的新手,并试图创build我的第一个模块。 但是我得到一个错误

TypeError: Object function SetAstAppLog.....has no method 'on' 

我的模块文件包含以下代码:

 var EventEmitter = require('events').EventEmitter; var util = require('util'); module.exports = SetAstAppLog; util.inherits(SetAstAppLog, EventEmitter); function SetAstAppLog(logFolderPath,fileNamePrefix,fileSize,logStreamObject) { EventEmitter.call(this); . . . . this.emit('objCreated'); } 

在app.js我正在做以下事情:

 var SetAstAppLog = require('astAppLog'); var fileSize = 1024; SetAstAppLog.on('objCreated', function () { console.log('an object was created'); }); SetAstAppLog.on('written', function () { console.log('Write operation completed.'); }); var objCommLogger = new SetAstAppLog(logFolderPath,logCommFilePrefix,fileSize,logCommMsg); var objErrorLogger = new SetAstAppLog(logFolderPath,logErrorFilePrefix,fileSize,logErrorMsg); 

在这里,我使用v0.10.21节点js。
我无法找出为什么我得到这个错误,即使我的模块文件包含EventEmitter
任何人都可以帮助解决这个问题?

您正在导出该function而不调用它。 你需要调用它:

 var SetAstAppLog = require('astAppLog')(); 

编辑:我没有注意到你在脚本中调用较低的函数。 您应该将事件处理程序附加到实例,而不是构造函数。

 var objCommLogger = new SetAstAppLog(logFolderPath, logCommFilePrefix, fileSize, logCommMsg); objCommLogger.on(...);