Я пытаюсь удалить модуль из кеша здесь.
В документации мы читаем:
require.cache
- Объект
Модули кэшируются в этом объекте, когда они требуются. Удалив значение ключа из этого объекта, следующее требование перезагрузит модуль.
Итак, я создал файл с именем 1.js
, который содержит одну строку:
module.exports = 1;
Затем я требую его через node
shell:
[email protected]:~/Documents/test$ node
> require("./1")
1
> require.cache
{ '/home/ionicabizau/Documents/test/1.js':
{ id: '/home/ionicabizau/Documents/test/1.js',
exports: 1,
parent:
{ id: 'repl',
exports: [Object],
parent: undefined,
filename: '/home/ionicabizau/Documents/test/repl',
loaded: false,
children: [Object],
paths: [Object] },
filename: '/home/ionicabizau/Documents/test/1.js',
loaded: true,
children: [],
paths:
[ '/home/ionicabizau/Documents/test/node_modules',
'/home/ionicabizau/Documents/node_modules',
'/home/ionicabizau/node_modules',
'/home/node_modules',
'/node_modules' ] } }
# edited file to export 2 (module.exports = 2;)
> require.cache = {}
{}
> require.cache
{}
> require("./1") // supposed to return 2
1
Итак, почему require("./1")
возвращает 1
, когда мой файл содержит module.exports = 2
, и кеш очищается?
Выполняя некоторую отладку, я увидел, что есть объект Module._cache
, который не очищается, когда я делаю require.cache = {}
.