В настоящее время я работаю над техническим долгом, выявленным SonarQube для приложения Node.js. Мое приложение позволяет на лету переключаться между живым и фиктивным источником данных. Для этого я удаляю предыдущее «требование» из кеша и повторно требую его. При запуске SonarQube ему не нравятся операторы «требовать». Он предлагает операторы «импорта». Однако в данном случае это может не подойти.
Упрощенная версия существующего кода:
var config = require('../config');
var polService = require(config.polService);
var root = require('../root');
function doingStuff(liveOrMock) {
setEnvironment(liveOrMock);
delete require.cache[require.resolve(root.path + ‘/config’)];
config = require('../config');
polService = require(config.polService);
}
Функция setEnvironment
устанавливает process.env.NODE_ENV = liveOrMock
, который используется в config.js
. Мы экспортируем модуль config
, используя module.exports = localOptions[process.env.NODE_ENV];
. Этот код выбирает одну пару ключей из JSON. Возвращаемое значение используется для выбора того, какой модуль используется для restService.
Возможность изменить используемый модуль для polService
является целью кода.