调试测试时如何在app.js in node.js中使用env变量?

How to use env variable in app.js in node.js when debugging test?

当我在 visual studio 上调试时 app.js 是 运行 在测试代码和 env 配置文件之前

如何在 app.js 上设置环境?

如果我在终端上部署或测试,我可以在 app.js 上使用 envs 并从日志中检查 env 但不能在调试时使用。

a.test.js

const { describe, it } = require('mocha');
const request = require('supertest');
const { expect } = require('chai');
const { setConfig } = require('../../../setConfig');
const { app } = require('../../../../app');

setConfig();

describe('transactionController', () => {
  it('test', async () => {
    await request(app)
      .post(`/`)
      .set('Accept', 'application/json')
      .type('application/json')
      .send()
      .expect(200);
  });

setConfig.js

const { config } = require('../config/config');

module.exports.setConfig = () => {
  console.log(`setConfig : ${JSON.stringify(config.debug)}`);
  const { debug } = config;
  const { NODE_ENV, CACHE_HOST, CACHE_PORT } = debug;

  process.env.NODE_ENV = NODE_ENV;
  process.env.CACHE_HOST = CACHE_HOST;
  process.env.CACHE_PORT = CACHE_PORT;
};

config.js

module.exports.config = {
  debug: {
    NODE_ENV: 'debug',
    CACHE_HOST: '127.0.0.1',
    CACHE_PORT: '6379'
  },
};

app.js

const serverless = require('serverless-http');
const express = require('express');

const app = express();

app.set('port', 3000);

console.log(`app : env : ${process.env.NODE_ENV}`);
if (process.env.NODE_ENV === 'prod' || process.env.NODE_ENV === 'dev') {
  app.listen(app.get('port'), () => {
    console.log(`Server running on ${app.get('port')} port`);
  });
  module.exports.app = serverless(app);
} else {
  module.exports.app = app;
}

在您的 launch.json(您设置调试器的文件)中,您可以将其添加到配置中:

"env": {
    "NODE_ENV": "debug",
    "CACHE_HOST": "127.0.0.1",
    "CACHE_PORT": "6379"
}

它会在您启动调试器时添加您想要的所有环境变量