由于小程序的限制,无法设置开发和正式的环境变量,这里参考node的方法来设置小程序的环境变量,由于小程序的限制,不管是体验版或开发版还是正式版,都是使用的一份本地缓存,当手机同时存在两个或两个以上小程序版本时,就会因为缓存的原因读取错误的本地缓存,除非有后端人员介入对错误进行处理,否则只能删除小程序以保证能正常使用,当然还有一个好处是保证了我们线上的正式版一定是生产环境
1. 首先创建环境文件
1 2 3 4 5 6 7
| ... --- enviroments --- enviroment.js --- enviroment.prod.js ...
|
以下只是个参考例子,具体情况根据自己的需要设置
1 2 3 4 5 6 7 8
| export const environment = { production: false,
GlobalConfigApiServer: '测试', TOKEN: 'Dev_Token', USER: 'Dev_UserInfor' }
|
2.封装两个常量,, Symbol()
是为了消除魔术字符串防止不必要的错误
1 2 3 4 5 6 7 8 9 10 11
| export const ENV_VERSION={ develop: 'develop',//开发版本 trial: 'trial',//体验版 release: 'release',//正式版 } export const ENVIRONMENT = { prod: Symbol('prod'), dev: Symbol('dev'), }
|
3.通过wx.getAccountInfoSync()
方法我们可以拿到当前运行的小程序版本,然后是可以根据具体的情况设置当前环境变量
1 2 3 4 5 6
| ...
globalData: { GlobalConfigApiServer: ENVIRONMENT.prod, },
|
这里只设置了开发版和体验版就是为了保证线上的版本永远是生产环境,当然我们可以进一步强化这种保险就是在书写ENV_VERSION
常量的时候只写入体验版和开发板,就能进一步防止错误操作
1 2 3 4 5 6 7 8 9 10 11
| checkEnviroment() { //开发版 if (envVersion === ENV_VERSION.develop) { this.globalData.GlobalConfigApiServer = ENVIRONMENT.dev; }
//体验版 else if (envVersion === ENV_VERSION.trial) { this.globalData.GlobalConfigApiServer = ENVIRONMENT.dev; } }
|
4.environment
就是我们当前的环境参数
1 2 3 4 5
| const app = getApp();
const environmentPath = app.globalData.GlobalConfigApiServer === ENVIRONMENT.prod ? 'environment.prod' : 'environment'; const { environment } = require('../../environments/' + environmentPath);
|