在节点中,仅在开发测试阶段才导出功能?

问题描述 投票:1回答:2

我创建了一个节点应用,并在文件中具有一些功能。我想对它们进行测试,所以我要导出功能,但这是一个安全问题,因此我是否只在开发时间才导出它?

这是我所拥有的:

async function AuthenticateHandler(req: Restify.Request, res: Restify.Response, next) { ... });
function shutdownServer() { ... }
module.exports = {
  AuthenticateHandler,
  shutdownServer
};

要构建,我目前使用Gulp文件并提供args来告诉它正在构建什么环境:

task("Build", series(CopyConfig));
function CopyConfig(cb){
    if(arg.env == "dev"){
        return src(['config.dev.json'])
            .pipe(rename("config.json"))
            .pipe(dest('./dist'));
    } else if(arg.env == "prod"){
        return src(['config.prod.json'])
            .pipe(rename("config.json"))
            .pipe(dest('./dist'));
    }else if(arg.env == "local"){
        return src(['config.local.json'])
            .pipe(rename("config.json"))
            .pipe(dest('./dist'));
    }
};

如何仅在开发人员和本地环境中才能导出?

node.js gulp automated-tests
2个回答
0
投票

尝试使用当前环境的值设置环境变量,然后将'module.exports'放入if块中。

if(process.env['ENV'] === 'dev'){
    module.exports = {};
}

0
投票

一种选择是使用环境变量,该变量可以在任何文件中访问。您可以将脚本添加到package.json文件:

"scripts": {
  "build:dev": "NODE_ENV='development' gulp"
}

然后,在带有导出文件的文件中,如下所示:

async function AuthenticateHandler(req: Restify.Request, res: Restify.Response, next) { ... });
function shutdownServer() { ... }

module.exports.shutdownServer = shutdownServer;

// conditionally export a function
if (process.env.NODE_ENV === 'development') {
  module.exports.AuthenticateHandler = AuthenticateHandler;
}
© www.soinside.com 2019 - 2024. All rights reserved.