有这样一个需求,在小程序内切换测试环境(即 ajax 链接)。
很容易理解,代码也很简单:
// utils.js import config from './config.js' ; function chooseEnviromentFirst(key) { const env = config.enviroment.now; if (env) { if (key) return env && env[key]; return env; } else { wx.navigateTo({ url: '/pages/chooseEnviroment/index' , }); return null ; }
module.exports = { chooseEnviromentFirst }; |
// config.js module.exports = { enviroment: { uat: { name: 'uat' , webUrl: 'x' , apiUrl: 'xx' , }, pre: { name: 'pre' , webUrl: 'y' , apiUrl: 'yy' , }, now: null , } }; |
// post.js import { chooseEnviromentFirst } from './util.js' ; function xx(data, callback, errorFn) { if (!(baseUrl = chooseEnviromentFirst( 'apiUrl' ))) return ; _GET(baseUrl + '/xx' , data, callback, 'ajax 请求' , errorFn); }, |
// /pages/chooseEnviroment/index.js import config from '../../utils/config.js' ; Page({ to_uat() { config.enviroment.now = config.enviroment.uat; wx.navigateBack(); } }) |
也确实实现了,但也发现了一个问题,
那就是即使我删掉了小程序,config.enviroment.now 也还是被赋值的,
等于 config.js 并没有被清除掉,那么小程序的缓存机制到底是如何的呢,
或者,能否还有其他办法去完成此需求。
你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
wechatide://minicode/HMHhFSmz7O1e
第一次弄,应该是这样吧,需用真机测哟。
出现问题的机型和系统版本是?按什么流程操作?
操作:开发版或体验版进入,选择测试环境,关闭小程序,删除小程序,重新进入后看能否重新选择测试环境。
试了下只有较少安卓机删除小程序后没有清掉缓存(苹果机把授权也清掉了)。
比如:魅族 Pro6,
微信版本是?如果不是最新版6.7.2的话更新试一下
魅族Pro6 微信 6.7.2 组件库 2.2.3
公司人少,还只测到我这台有问题,突然感觉问题不大了。
你好,wx.removeStorage也删除不了缓存吗?
恩啊,后来也把 to_uat 方法也改为了 wx.setStorageSync 模式,但依旧如此。
场景如下,我选择完环境调用了 to_uat 方法,
然后长按删除小程序,再进入时缓存还在,
所以造成我无法二次切换环境。
唔,无论是扫码开发版,还是体验版,都不会再次触发 onLaunch,
所以想问下这个缓存会在何种时机下清除。
当然理论上不可能是重新冷启动,那能否有其他生命周期能让我完成此需求所需的操作。