我目前正在研究由SonarQube为Node.js应用程序标识的技术债务。我的应用程序允许在实时和模拟数据源之间进行即时切换。为了达到这个目的,我从缓存中销毁了前面的“require”并重新使用它。运行SonarQube时,它不喜欢“require”语句。它的确提出了“进口”声明。但是,在这种情况下可能不适合。重新包含模块
的现有代码简化版本:
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
使用。我们使用module.exports = localOptions[process.env.NODE_ENV];
导出config
模块此代码从JSON中选择一个密钥对。返回的值用于选择哪个模块用于restService。
能够改变正在使用的模块是polService
是代码的目的。
是的,它看起来像ES6模块不适合在这里。他们不允许这样搞乱。 – Bergi