Closed fionsay closed 6 months ago
Egg不支持覆盖config.dev.js,默认只会覆盖config.default.js的配置。不过可以配置生效的是config.devForOne.js配置,把 process.env.EGG_SERVER_ENV 环境变量配置成 devForOne 就可以生效 config.devForOne.js 配置,试试添加下 "devForOne": "EGG_SERVER_ENV=devForOne egg-bin dev"
Egg不支持覆盖config.dev.js,默认只会覆盖config.default.js的配置。不过可以配置生效的是config.devForOne.js配置,把 process.env.EGG_SERVER_ENV 环境变量配置成 devForOne 就可以生效 config.devForOne.js 配置,试试添加下 "devForOne": "EGG_SERVER_ENV=devForOne egg-bin dev"
我试过添加,执行之后之后一直乱码报错,具体如下: $ npm run devForOne
testProject@1.0.0 devForOne EGG_SERVER_ENV=devForOne egg-bin dev
'EGG_SERVER_ENV' ▒▒▒▒▒ڲ▒▒▒▒ⲿ▒▒▒Ҳ▒▒▒ǿ▒▒▒▒еij▒▒▒ ▒▒▒▒▒▒▒▒▒ļ▒▒▒
查了下 egg-bin 的执行参数好像也没有支持修改env的,感觉需要本地开发不同配置的话,只能添加config.local.js去覆盖default的内容
我试了上面这个配置是可以的
看源码可以知道只要设置 EGG_SERVER_ENV 环境变量为 devForOne 没问题就能正常用 config.devForOne 去覆盖掉 config.default 的。这里会拿 config.${this.serverEnv} 配置文件去覆盖config.default,而此时的 this.serverEnv 是从 EGG_SERVER_ENV 环境变量中读取(因为此时 this.options.env 没值且 config/env 目录下都没文件,所以 serverEnv 会走到从 EGG_SERVER_ENV 读取的逻辑)
看源码可以知道只要设置 EGG_SERVER_ENV 环境变量为 devForOne 没问题就能正常用 config.devForOne 去覆盖掉 config.default 的。这里会拿 config.${this.serverEnv} 配置文件去覆盖config.default,而此时的 this.serverEnv 是从 EGG_SERVER_ENV 环境变量中读取(因为此时 this.options.env 没值且 config/env 目录下都没文件,所以 serverEnv 会走到从 EGG_SERVER_ENV 读取的逻辑)
刚刚解决了乱码显示,知道执行失败的原因了: $ npm run devForOne
testProject@1.0.0 devForOne EGG_SERVER_ENV=devForOne egg-bin dev
'EGG_SERVER_ENV' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
目前在找为啥报这个错T_T
有个 scope 的配置
我试了上面这个配置是可以的
感谢,ok了,因为是window系统,设置变量的命令需要使用set: set EGG_SERVER_ENV=xx && npm run dev
在此输入你需要反馈的 Bug 具体信息(Bug in Detail):
背景:本地开发由于有多套不同的配置,不想每次来回切换修改,例如: config.dev.js config.devForOne.js config.devForTwo.js
如何配置scripts,可以实现类似于 npm run dev(egg-bin dev)的命令操作进行本地开发测试 如执行npm run devForOne,本地开发环境会自动将config.devForOne.js的内容覆盖config.dev.js
可复现问题的仓库地址(Reproduction Repo)
如何配置scripts,可以实现类似于 npm run dev(egg-bin dev)的命令操作进行本地开发测试 如执行npm run devForOne,本地开发环境会自动将config.devForOne.js的内容覆盖config.dev.js
Node 版本号:
16.0.0
Eggjs 版本号:
3.17.5
相关插件名称与版本号(PlugIn and Name):
无
操作平台与版本号(Platform and Version):
win10