Can not access to static property after using decache
- Dominant language
- JavaScript
- Stars
- 153
- Forks
- 12
- PR merge metrics
- No merged PRs in 30d
Description
On my main project, I import modules from folders automatically and at some point, I have to re-import them so I use decache. The example below simulates that what I try to do on my main project.
Firstly, I assign a new instance of `EventEmitter` to `Logger.eventEmitter`. Then, I import my event module and send a log message using `event.logger.log` and it logs successfully. After that, I decache my module and re-import it. When I try to use `logger.log` again with the re-imported module, it returns an error.
There are my codes and console output:
```js
// index.js
const { Logger } = require('./logger');
const { EventEmitter } = require('events');
const { join } = require('path');
const decache = require('decache');
const eventEmitter = new EventEmitter();
eventEmitter.on('log', message => console.log(`Log: ${message}`));
Logger.eventEmitter = eventEmitter;
const pathStr = join(__dirname, './events/testEvent.js');
const imported = require(pathStr);
imported.logger.log('Hello world');
decache(pathStr);
const imported2 = require(pathStr);
imported2.logger.log('Hello world2');
```
```js
// logger.js
class Logger {
static eventEmitter;
log(message) {
Logger.eventEmitter.emit('log', message);
}
}
module.exports = { Logger };
```
```js
// event.js
const { Logger } = require('./logger');
class Event {
logger = new Logger();
}
module.exports = { Event };
```
```js
// events/testEvent.js
const { Event } = require('../event');
const event = new Event();
module.exports = event;
```
```
Log: Hello world
C:\Users\bur4k\Desktop\test2\logger.js:5
Logger.eventEmitter.emit('log', message);
^
TypeError: Cannot read properties of undefined (reading 'emit')
at Logger.log (C:\Users\bur4k\Desktop\test2\logger.js:5:29)
at Object. (C:\Users\bur4k\Desktop\test2\index.js:16:24)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.15.0
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.