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 でノード 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 に答える