- [开盖即食]小程序不同环境切换和自动判断的四个方案
[图片] 实际开发中,我们经常会遇到“开发版,体验版/QA版,正式版”多个环境的切换,它们对应的是不同的后端接口地址,开发中容易把dev环境的接口地址提交到git,这时候合并没注意的话,就容易出现事故。 总结的4个方案,避免此类事件的发生,做到自动化判断环境,而非手动修改~ 先说下核心逻辑:就是判断是否线上,其他环境就算配错,风险也没线上环境大 1、使用官方API getAccountInfoSync判断 [代码]const Hosts = { mock: 'http://192.168.1.996:007', dev: 'https://dev.qq.com', //开发环境 hidden: "https://hidden.qq.com", //预发布环境 prod: 'https://prod.qq.com', //线上环境 qa: 'https://qa.qq.com', }; const { envVersion } = wx.getAccountInfoSync().miniProgram; let baseUrl = ""; switch (envVersion) { case 'develop': baseUrl = `${Hosts.dev}`; break; case 'trial': baseUrl = `${Hosts.hidden}`; break; case 'release': baseUrl = `${Hosts.prod}`; break; default: baseUrl = `${Hosts.prod}`; break; } console.log(baseUrl) [代码] [图片] 可以看到IDE工具的返回值是 [代码]develop[代码],这样就可以根据API自动切换不同的场景了。 文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/account-info/wx.getAccountInfoSync.html 2、通过本地特殊文件来判断 在本地添加一个大家约定好的文件,比如local.txt,如果调试的时候有这个文件,就是当前环境。 [代码]let _ENV = 'prod'; const fileManager = wx.getFileSystemManager(); try { fileManager.accessSync('/local.txt'); _ENV = 'dev'; } catch (e) { } if (_ENV === 'prod') { //这里其实只判断是否是线上 baseUrl = Hosts.prod; } [代码] 通过 .gitignore 忽略这个文件,这样就不会合并到master分支。 当然这种方法,其实不一定用判断环境,也可用来测试一些其他功能 3、采用CI机器人自动化切换环境发布 [代码]//写好脚本,在每次上传前或者预览前修改 host文件 const fs = require('fs'); fs.readFile('./host.js','utf8',function(err,data){ // 字符串转数组 let txt = "let baseUrl = Hosts.prod"; fs.writeFile('./host.js',txt,function(err){ console.log(arr); }) }) //上传脚本 const ci = require('miniprogram-ci') ;(async () => { const project = new ci.Project({ appid: 'wxsomeappid', type: 'miniProgram', projectPath: 'the/project/path', privateKeyPath: 'the/path/to/privatekey', ignores: ['node_modules/**/*'], }) const uploadResult = await ci.upload({ project, version: '1.1.1', desc: 'hello', setting: { es6: true, }, onProgressUpdate: console.log, }) console.log(uploadResult) })() [代码] 无论是上传发布,还是预览都可以通过node重新配置host,或者修改你想修改的文件。 官方miniprogram-CI文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html 4、本地配置中的自定义处理命令 [图片] 在这里配置node或者yarn的一些方法,也可以解决这个问题 在上传审核前,重新设置host为线上的后端地址,同时这个也可以用于一些多端开放切换和执行一些自定义的node策略。 总结 如果只是解决 “多人开发中切换本地环境导致误传git和发布后指向后端url错误"的话,用第一种方法即可。 其他方法除了解决此类问题,还可为解决预编译,第三方框架等问题提供一种思路。 如有疑问请留言~ 觉得有用,请点个赞哦,让我继续分享更有动力~
2021-09-10 - 关于__wxConfig.envVersion 这个api的使用?
_wxConfig.envVersion 这个api是官方提供的吗?怎么在文档中找不到? 这个api在审核的时候返回值是'develop'吗? 望回复,谢谢
2019-09-27 - wx.getAccountInfoSync() 无法拿到 envVersion?
自定义组件中的 ready 生命周期调用 wx.getAccountInfoSync 获取不到 envVersion: 有人清楚吗?谢谢! [图片]
2020-12-22 - wx.getAccountInfoSync().miniProgram.envVersion问题?
使用wx.getAccountInfoSync().miniProgram.envVersion时,在体验版显示trial,手机扫预览码显示develop,但是在微信开发工具中显示release,请问下,如果我提审,提审的版本会显示哪个状态,上线后的版本又显示哪个状态?
2020-07-30 - 请问getAccountInfoSync在审核时的miniProgram.envVersion值?
[图片] 本来想问客服的,结果人家不知道,只好到社区问下! 事情发生的原因是: 提交了几个版本审核没通过,理由是授权登录没反应。然后我们测试又没问题,反反复复几次后,我怀疑是自己写的getAccountInfoSync接口返回的的miniProgram.envVersion值不是预期的“trial”或“release”。 问了客服说是自己最后提交的是什么版本,审核的就是什么版本。难道他们审核的不是“trial”的体验版吗?
2020-09-24 - 微信小程序在安卓端input框获取焦点时,出现重影并马上消失
微信小程序在安卓端input框获取焦点时,出现重影并马上消失,这是什么原因
2018-06-05 - input的placeholder输入内容时不消失,直接跟value值重叠在一起
关于input我有很多疑问,第一个就是placeholder-style=“color:{{colorName}}”这种写法在工具上是没问题的,但是在手机上不好使,placeholder-class好使。 第二个问题就是手机上input里面的文字字体会跟手机自己设置的字体冲突,聚焦的时候是手机自带的字体,失焦的时候就是微软雅黑或者wxss里面设置的字体样式。textarea里面的字体就会自动跟手机字体保持一致。 第三个问题就是placeholder不会在输入内容的时候自动消失,直接就会跟value值重叠在一起 [图片]
2018-08-02 - 请问INPUT出现闪烁和重影的问题什么时候解决?
你们先上这个Demo即可复现(3年bug) 使用模拟器以及开发工具看不清楚闪烁;使用安卓机型大多是都有; 效果:获得焦点闪烁并且会有瞬间重影然后恢复正常,内容有上下抖动视觉;失去焦点会闪烁 环境:安卓真机测试;模拟器或开发工具无法出现 [图片]
2019-11-30