解锁「微信小程序」云开发环境变量设置的正确姿式
发表时间:2021-2-3
发布人:葵宇科技
浏览次数:373
微信小程序云开发可免费创建两套环境
test用于测试prod用于线上
如果想创建多套环境,需付费,每套环境完全隔离,拥有完全独立的云函数、数据、资源存储库,相应地对于资源使用的独立统计,比如 本日数据库读请求数、本月云函数资源使用量,每套环境都有独立名称及 ID。
-
打开小程序开发者工具菜单栏
-
点击
云开发打开云开发控制面板 -
点击
设置可查看
进行云开发时
调用 cloud.init 初始化云能力
传入 env 参数指定云环境
云能力可在两个地方进行初始化:
- 小程序客户端
- 每个云函数中(一个云函数通常是一个独立的文件夹)
由于这两个地方都通过 cloud.init 初始化设置
通常会在开发时混淆从而引发一些报错
因此,正确设置 env 云环境变量显得尤为重要
小程序客户端 env 设置
通常在 app.js 的 onLaunch 方法中进行初始化
wx.cloud.init({
env: envID
})
复制代码
envID 表示的环境 ID 必须明确设置
不要使用 wx.cloud.DYNAMIC_CURRENT_ENV 动态设置
如此设置最终解析后的值
指向第一个创建的云环境 ID
如果删除了这个环境,就指向另外一个
这会造成环境混乱、不可控
所以,一定要明确设置云环境 ID
小程序客户端指定了特定的云环境 ID
是不是就代表一定使用对应云环境的云函数、云数据的呢?
并不是
到了这一步,只是成功了一半
因为完全有可能出现
小程序客户端明确指定的 test 环境
结果使用 prod 环境的数据库
所以,接下来要正确设置云函数中的 env 参数
云端云函数 env 设置
为了便于管理、维护
通常一个云函数就是一个文件夹、模块、接口
每个云函数都要进行初始化:
const cloud = require('wx-server-sdk')
cloud.init({
env: envID
})
复制代码
如果用到云数据库也可以使用 env 初始化:
const db = cloud.database({
env: envID // 当然,不指定 env 效果相同
})
复制代码
为了保证当小程序客户端切换到指定云环境 ID 时
比如由 test 切换到 prod
云函数、云数据库 都动态切换到相应的环境
将 env 设置为 cloud.DYNAMIC_CURRENT_ENV 即可
通过上述设置
只要在小程序客户端一处修改 env 到指定的云环境
就会自动使用对应云环境的云函数、云数据库了
也就不会出现上述 test 环境使用 prod 数据库等环境交叉问题了
云开发 env 完整配置
小程序客户端 app.js 中:
云函数中:








