blog icon indicating copy to clipboard operation
blog copied to clipboard

[2019-12-18] 自动识别 微信小程序的 开发版,体验版,正式版

Open coppyC opened this issue 5 years ago • 1 comments

需求是测试人员需要用体验版做测试,但是上线的时候又需要切回生产环境发布,十分繁琐。

这个时候就需要用代码自动判断。

__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'
}

image

perfect!!

coppyC avatar Dec 18 '19 01:12 coppyC

高产似那啥

MikuBlog avatar Dec 18 '19 02:12 MikuBlog