【发布时间】:2017-06-13 08:53:47
【问题描述】:
我目前正在处理 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。我们使用module.exports = localOptions[process.env.NODE_ENV]; 导出config 模块此代码从JSON 中选择一个密钥对。返回的值用于选择哪个模块用于 restService。
polService 能够更改正在使用的模块是代码的目的。
【问题讨论】:
-
是的,看起来 ES6 模块不适合这里。他们不允许这样胡闹。
标签: javascript ecmascript-6 es6-modules