midwayjs / midway

🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 🌈
https://www.midwayjs.org/
MIT License
7.4k stars 577 forks source link

midway-bin test 环境变量配置错误 #480

Closed dreamerblue closed 3 years ago

dreamerblue commented 4 years ago

最近在跑单测的时候发现 config.unittest.ts 的配置没有被合并进来,研究一番发现 midway-bin test --tsNODE_ENV 设为了 unittest,这个是错误的,根据 egg 官方文档应为 test,参考 https://eggjs.org/zh-cn/basics/env.html#%E4%B8%8E-node_env-%E7%9A%84%E5%8C%BA%E5%88%AB。这个环境变量配置错误导致 egg 没能把单测环境的 config 合并。

目前临时解决方法是在 package.json scripts 中手动指定环境变量 NODE_ENV=test

附测试代码和运行结果,分别使用 midway-bin 和原生 egg-bin 执行:

describe('test', () => {
  before(() => {
    console.log('NODE_ENV', process.env.NODE_ENV);
    console.log('EGG_SERVER_ENV', process.env.EGG_SERVER_ENV);
  });
});

运行结果:

midway-bin

NODE_ENV unittest
EGG_SERVER_ENV undefined

egg-bin

NODE_ENV test
EGG_SERVER_ENV undefined
czy88840616 commented 4 years ago

的确是,egg的环境变量没有按照集团定的格式来,但是egg又在代码里把test转成了unittest。

czy88840616 commented 3 years ago

已经兼容 test 和 unittest 环境。

https://www.yuque.com/midwayjs/midway_v2/env_config#s4lB4

image