簡體   English   中英

TypeError:對象函數...沒有'on'方法

[英]TypeError: Object function…has no method 'on'

我是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);

在這里,我使用節點js與v0.10.21。
我無法找出為什么我收到此錯誤,即使我的模塊文件包含EventEmitter
任何人都可以幫忙解決這個問題嗎?

您正在導出該函數而不調用它。 你需要打電話給它:

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

編輯:我沒注意到你在腳本中調用了較低的函數。 您應該將事件處理程序附加到實例,而不是構造函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM