1

我是 node.js 的新手,正在尝试创建我的第一个模块。但我收到一个错误

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 的 node js。
即使我的模块文件包含我也无法找出为什么我会收到此错误EventEmitter
任何人都可以帮助解决此问题吗?

4

1 回答 1

3

您正在导出函数而不调用它。你需要调用它:

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

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

var objCommLogger = new SetAstAppLog(logFolderPath, logCommFilePrefix, fileSize, logCommMsg);
objCommLogger.on(...);
于 2013-11-05T15:44:30.163 回答