Reputation: 3
Why am I getting this error?
events.js:133
if (this._events === undefined ||
^
TypeError: Cannot read property '_events' of undefined
at EventEmitter.init (events.js:133:12)
at EventEmitter (events.js:66:21)
at Object.<anonymous> (D:\Coding\Online\Node.js\FreeCodeCamp\les2_TheEventModuleAndEventEmitterClass\app.js:10:22)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:10
92:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/ru
n_main.js:72:12)
at internal/main/run_main_module.js:17:47
PS D:\Coding\Online\Node.js\FreeCodeCamp\les2_TheEventModuleAndEventEmitterClass>
I only wrote this:
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
class Person extends EventEmitter(){
constructor(name){
super();
this._name = name;
}
get name(){
return this._name;
}
}
let pedro = new Person('Pedro');
pedro.on('name',()=>{
console.log('my name is ' + pedro.name);
});
pedro.emit('name')
Where am I doing wrong? Thanks in advance
Upvotes: 0
Views: 2776
Reputation: 61
The problem is that you are adding parenthesis on class declaration. Your code should be:
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
class Person extends EventEmitter { // This is what was changed
constructor(name){
super();
this._name = name;
}
get name(){
return this._name;
}
}
let pedro = new Person('Pedro');
pedro.on('name',()=>{
console.log('my name is ' + pedro.name);
});
pedro.emit('name')
FYI, you don't need to instantiate the class EventEmitter to extend from it. You can delete second line if you are not using object eventEmitter
.
Upvotes: 2