如何防止模块在NodeJS的生产中加载?

时间:2019-04-15 12:17:34

标签: node.js

根据问题标题,我有一个仅应在测试中使用的模块,如何防止其在生产中使用?

3 个答案:

答案 0 :(得分:3)

好像您正在尝试在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');
}

答案 1 :(得分:0)

这完全取决于您的构建过程和环境变量。我知道,例如,如果您使用Wepback进行构建,则在webpack.config文件中,您将具有以下代码,可以在其中添加排除项:

module: {
    rules: [
        { test: /\.ts$/, loader: "ts-loader", exclude: /*myModuleToExclude*/, },
    ]
}

只需为您的特定构建过程寻找特定的实现。

答案 2 :(得分:-1)

在package.json的“ devDependencies”部分添加模块,而不是添加“ dependencies”