Я пишу тесты для моего модуля npm. Эти тесты требуют установки нескольких версий модуля npm, чтобы проверить, будет ли модуль проверять их как совместимые или несовместимые.Узел require.cache delete не приводит к перезагрузке модуля
как-то все uncache библиотеки или функции, которую я нашел на StackOverflow или базы данных НПХ не работает ..
установить/удалить НПЕ модули, используя свои вспомогательные функции:
function _run_cmd(cmd, args) {
return new Promise((res, rej) => {
const child = spawn(cmd, args)
let resp = ''
child.stdout.on('data', function (buffer) {
resp += buffer.toString()
})
child.stdout.on('end', function() {
res(resp)
})
child.stdout.on('error', (err) => rej(err))
})
}
global.helper = {
npm: {
install: function (module) {
return _run_cmd('npm', ['install', module])
},
uninstall: function (module) {
decacheModule(module)
return _run_cmd('npm', ['uninstall', module])
}
}
}
Это мой текущее decache функция, которая должна очистить все модули кэшей (я пробовал другие, в том числе НПХ модулей ни один из них не работал)
function decacheModules() {
Object.keys(require.cache).forEach(function(key) {
delete require.cache[key]
})
}
Я установка несколько ве (https://www.npmjs.com/package/less)
В моем первом тесте я устанавливаю устаревшую версию, которая не имеет функции render
.
В некоторых других тестах я устанавливаю последнюю версию, которая имеет функцию render
. Так или иначе, если я тестирую эту функцию, проверка которой не выполняется. Если я пропустил первый тест, другой тест будет успешным. (render
-функция есть).
Это заставляет меня верить, что удаление require.cache не имеет никакого влияния ...
Я использую узел v4.2.4.
Мне нужны модули с пользовательским письменным резольвером, который проверяет, соответствует ли версия пакета, установлен пакет и т. Д. Я попытался вырвать каждое требование, которое может содержать ссылку на модуль. Однако он все еще не работает ... Я не знаю, что делать дальше. Я могу опубликовать код теста и тестируемый модуль (около 150 строк кода) – l0rin