blog
blog copied to clipboard
[2019-12-18] 自动识别 微信小程序的 开发版,体验版,正式版
需求是测试人员需要用体验版做测试,但是上线的时候又需要切回生产环境发布,十分繁琐。
这个时候就需要用代码自动判断。
__wxConfig.envVersion
// 'develop' 开发版
// 'trial' 体验版
// 'release' 正式版
注意 因为官方没有明确文档,所以这其实是个野路子,可能随时不能用。
为了以防万一,防止以后这个方法不能用的时候代码报错、环境判断不正确等情况,可以这么写
export const ENV_VERSION =
typeof __wxConfig !== 'undefined' // 防止没有__wxConfig变量报错
&& __wxConfig // 防止__wxConfig是 null 等空值
&& ['develop', 'trial', 'release'].includes(__wxConfig.envVersion) // 防止envVersion不是这三个枚举值之一
&& __wxConfig.envVersion // 返回当前环境
|| 'release' // 默认生产环境
然后根据不同环境配置url (笔者用的是axios)
axios.defaults.baseURL =
ENV_VERSION === 'release'
? 'https://product.com' // 生产环境
: 'https://develop.com' // 开发环境
默认情况是生产环境,这样就算突然没有这个对象,代码也不至于报错不能运行,线上正式版也不会突然变成开发环境。
typescript 的还可以再加上这段声明代码
declare const __wxConfig: {
envVersion: 'develop' | 'trial' | 'release'
}

perfect!!
高产似那啥