根据问题标题,我有一个模块应该只在测试中使用,我如何才能防止它在生产中使用?

最佳答案

看起来您正试图模拟NodeJS中的一些模块以获得测试用例。
与其有条件地导入,不如有条件地导出真实或模拟对象。

import mockModule from './mockModule';
import realModule from './realModule';

const exported = (CONDITION) ? mockModule : realModule;
export default exported;

另外,您可能希望为您的用例导出一些空对象,而不是mockModule。类似于:
const exported = (CONDITION)? {} : realModule;

CONDITION根据某个环境变量或您的测试套件来检查测试是否正在运行。例如,对于摩卡,你可以使用:
var isInTest = typeof global.it === 'function';
来源:How to detect if a mocha test is running in node.js?
此外,使用require可以有条件地导入模块:
if (CONDITION) {
    const foo = require('foo');
}

08-08 02:49