uni-app 高效开发小程序技巧:自动化切换环境变量

article/2025/7/22 0:41:30

一. 前言

在微信小程序开发中,uni-app 作为一个开发利器,方便了广大开发者,越来越多的公司开始使用 uni-app 进行开发,尤其是在开发小程序的时候,今天给大家分享一个使用 uni-app 高效开发小程序的技巧,如何自动化切换环境变量,无缝适配微信小程序的各种版本!

二. 背景

uni-app 进行开发小程序时,需要在不同的环境中配置不同的域名,比如开发环境测试环境生产环境。以微信小程序开发为例,有开发版体验版正式版环境的区分,通常情况下,测试人员会在体验版中进行,同时对应我们测试环境。测试通过后,发布正式版,则是对应生产环境。

因此,在常规的测试发布应用过程中,可能我们需要先将体验版的域名配置到测试环境,等待测试通过后,再将体验版的域名配置到生产环境,进而提交审核上线。这个过程,需要我们手动修改环境去操作微信小程序的开发工具,然后再去提交审核。这样的操作,不仅繁琐,而且容易出错,很有可能在修改之后,因为没有及时改回去,导致线下测试操作了线上数据,引发生产问题。

因此为了持续集成自动化,我们可以使用一些方式来判断微信所处的运行环境,根据环境自动切换连接对应后端接口地址。

本篇文章,我们将学习到如何自动代替手动,无缝快速切换微信小程序的环境,根据不同环境使用全局定义的环境变量。

三. 解决方案

对于根据微信小程序的环境(开发版,体验版,正式版)自动化切换环境变量,代替手动切换的繁琐和易错性。其实微信小程序的官方 API :wx.getAccountInfoSync() 已经提供了这个功能,可以根据返回 envVersion 来进行判断。

我们可以看一下如下的代码:

const accountInfo = wx.getAccountInfoSync()
console.log('小程序appId:', accountInfo.miniProgram.appId) // 小程序 appId
console.log('小程序版本:', accountInfo.miniProgram.envVersion) // 小程序版本
console.log('线上小程序版本号:', accountInfo.miniProgram.version) // 线上小程序版本号

envVersion 可以取三个值之一:'develop'、'trial' 和 'release'。这些值代表了小程序当前的运行环境:

  • develop: 表示开发版环境,即在开发者工具中预览或者通过 wx.preview 方法预览的环境。

  • trial: 表示体验版环境,即通过微信公众平台将小程序提交后发布为体验版,用户可以在微信中体验到的环境。

  • release: 表示正式版环境,即通过微信公众平台审核通过后正式发布的环境,用户可以在微信中搜索到并使用的环境。

在微信开发者工具中运行的小程序,envVersion 的值为 'develop',如下图所示:

四. 实现流程

1. 定义环境变量

首先我们先在项目目录下,新建一个 environment.js 文件,用于定义环境变量。这些环境变量一经定义,可以全局使用。可以主要有以下几个:

  • isProd:是否是生产环境

  • baseURL:API 接口的基础 URL

在这里,我简单定义了两个环境变量,后续可以根据项目的开发需要,自行定义。

// API 环境变量配置
const environment = {isProd: true,baseURL: 'http://api.production.com'
}export { environment }

2. 判断小程序环境

uni-app 中,我们可以通过 #ifdef#endif 来判断当前的环境,从而进行不同的操作。我们可以在 environment.js 文件中,设置不同的环境变量,从而实现不同环境下的不同操作。

在微信小程序环境下,根据微信环境变量,不同的版本设置不同的域名。

// #ifdef MP-WEIXIN
// 在微信小程序环境下,根据微信环境变量,根据不同的版本设置不同的域名const accountInfo = wx.getAccountInfoSync()switch (accountInfo.miniProgram.envVersion) {case 'develop': // 开发版小程序console.log('开发版小程序')breakcase 'trial': // 体验版小程序console.log('体验版小程序')breakcase 'release': // 线上小程序console.log('线上小程序')breakdefault:console.log('判读出错')break
}
// #endif

在微信开发者工具中运行的小程序,可以看到输出的是体验版小程序,如下图所示:

3. 设置环境变量

根据以上的判断结果,我们可以在 environment.js 文件中,设置不同的环境变量,从而实现不同环境下对应的变量值是预期的值。

const environment = {isProd: true,baseURL: 'http://api.production.com'
}
// #ifdef MP-WEIXIN
// 在微信小程序环境下,根据微信环境变量,根据不同的版本设置不同的域名
const accountInfo = wx.getAccountInfoSync()switch (accountInfo.miniProgram.envVersion) {case 'develop': // 开发版小程序environment.isProd = falseenvironment.baseURL = 'https://api.development.com'breakcase 'trial': // 体验版小程序environment.isProd = falseenvironment.baseURL = 'https://api.release.com'breakcase 'release': // 线上小程序environment.isProd = trueenvironment.baseURL = 'https://api.production.com'breakdefault:environment.isProd = trueenvironment.baseURL = 'https://api.production.com'break
}
// #endif
console.log('环境变量:', environment)
export { environment }

五. 问题

在使用 wx.getAccountInfoSync() 获取 envVersion 判断微信小程序所处环境时。在某些未知的情况下,当我们提交体验版审核时,可能会出现判断出现错误的情况,影响审核人员的审核!

这个问题曾经在社区问烂了,到如今可能未必解决,如下图所示:

所以遇到这个问题不必惊讶,可以探寻适合自己的方案解决!我最近还遇到了一次,登录无响应,想来是判断环境和预期不一致导致的。

六. 总结

通过以上的了解,在微信小程序开发中,我们可以根据微信官方的小程序 API wx.getAccountInfoSync() 这个方法而得到当前运行的小程序环境变量 envVersion,根据他来判断是开发版、体验版、正式版,从而实现不同环境下使用不同的全局变量,进而实现自动化配置。

其实不只是小程序,在 uni-app 的多端开发中,在开发 H5 端App 端时,也可以使用类似的思想实现这种自动化,同时也不仅限于全局环境变量。我们可以将这种自动化配置的思想延续到其他方面,从而实现更加高效的开发。

微信官方文档-小程序 API

如果本文对你有帮助,麻烦动手点关注,点收藏,点点赞。感谢!


http://www.hkcw.cn/article/NbWKtTxVpQ.shtml

相关文章

基于微信小程序的旅游攻略分享与互动平台设计与实现

目录 一. 🦁 前言二. 🦁 开源代码与组件使用情况说明三. 🦁 核心功能3.1 游客端功能3.1.1 景点信息查询功能3.1.2 旅游路线推荐功能3.1.3 景点打卡功能3.1.4 评论与互动功能3.1.5 门票预订功能3.1.6 当地美食推荐功能3.1.7 个人中心 3.2 管理…

uni-app 发行到微信小程序,主包过大解决方案

目录 1.静态资源通过cdn引入 2.移除无依赖组件 3.将非核心页面移入subPackages中 正常uni-app项目发行到微信小程序,发现包过大,基本已经没法从代码层面修改内容了,今天这里介绍一些,不用大批量修改源码的情况下,减少包大小的方式 官方默认这包不能超过2M 分包不能超过30M …

微信小程序富文本解析组件wxParse实践指南

本文还有配套的精品资源,点击获取 简介:微信小程序wxParse组件是一款用于解析和渲染富文本内容的工具,它扩展了小程序对HTML内容的支持,加入了CSS样式和图片懒加载等特性。开发者可以利用这个组件将HTML文本转换为WXML结构&…

微信小程序wx.getlocation接口申请教程

wx.getLocation(Object object) 功能描述: 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。开启高精度定位,接口耗时会增加,可指定 highAccuracyExpireTime 作为超时时间。地图相关使用的坐标格式应为 gcj02。 …

【一文读懂】uniapp微信小程序获取手机号-手机号快速验证组件(全流程)

微信小程序获取手机号,要分几步,再次做个记录,希望耐心看完。 1. 第一步,先获取code,并不是登入的那个code, 2. 第二步,根据小程序的appid获取access_token凭证, 3. 第三步&#xf…

微信小程序实现微信授权登录的完整流程

1. 概述 微信授权登录是小程序用户登录的常见方式,利用微信提供的 wx.login 和 wx.getUserProfile 方法,获取用户的基本信息和唯一标识 openid 及 session_key。结合后端存储及业务逻辑,可以实现用户的身份管理。 2. 流程图 用户授权登录的…

微信小程序页面制作——婚礼邀请函(含代码)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

经济学泰斗菲舍尔逝世:培育伯南克、德拉吉的央行界“一代宗师” 全球金融体系的“救火队长”

当地时间6月1日,以色列央行宣布世界著名经济学家、以色列央行前行长及美联储前副主席斯坦利菲舍尔于5月31日逝世,享年81岁。菲舍尔拥有美国和以色列双重国籍,其职业生涯横跨学术界、国际金融机构与中央银行,对全球经济政策产生了深远影响。他曾担任以色列银行行长,并出任美…

高动态范围射频收发器如何解决关键性任务通信的阻塞挑战

摘要 由于频谱有限,商用/专用蜂窝网络的使用越来越多,无线电平台开发面临着更复杂的干扰场景。本文将讨论高动态范围射频收发器 ADRV9002 软件定义无线电(SDR)如何应对关键性任务通信无线电和其他高动态要求无线应用的阻塞挑战。 引言 关键性任务通信…

达科欢迎樊振东加入球队 德甲新星闪耀

#达科欢迎樊振东加入球队# 德甲联赛萨尔布吕肯乒乓球甲级俱乐部 宣布樊振东 加盟球队,效力于该队的达科-约奇克在社交媒体欢迎樊振东加入球队。#樊振东加盟德甲联赛#责任编辑:zx0001

北京今天最高气温达31℃!假期结束防暑降温模式正式开启 北风加大注意防护

据北京市气象局消息,6月2日08时,南郊观象台气温为21.4℃。预计今天白天最高气温将达到31℃左右,外出时请注意遮阳防晒并勤补水。受冷空气影响,今天白天北风自西向东逐渐加大,阵风可达6、7级,请注意防风,防范高空坠物。早晨天气晴间多云,有轻雾,偏北风1、2级,气温在17…

乌为何剑走偏锋突袭俄战略轰炸机 FPV无人机木马立奇功

以色列有“BP机炸弹”,乌克兰有“FPV无人机木马”,这似乎在逼迫普京使用战术核武器。6月1日,据媒体报道,经过18个月的策划,乌克兰实施了代号为“蜘蛛网”的行动,摧毁了41架俄罗斯战略轰炸机。乌克兰安全局发言人表示,此次行动由泽连斯基亲自指挥,乌安全局长马柳克负责具…

2025三掌柜赠书活动第十九期 DeepSeek图书:全年龄段的智慧之选,一本书开启知识之旅

目录 Part.0 前言 Part.1 职场人的AI效率革命:解锁DeepSeek多元应用,精准解决高频痛点! Part.2 企业家的必修课:用AI重构商业模式,打造下一个独角兽! Part.3 学术党的救命稻草:选题到答辩全辅…

Spring Boot + MyBatis 实现的简单用户管理项目的完整目录结构示例

📁 示例项目结构(基于 Maven) user-management/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/usermanagement/ │ │ │ ├── controller/ │ │ │ │ └── UserC…

科威特一住宅楼起火致6死 火灾原因待查

科威特费尔瓦尼耶省一栋住宅楼在6月1日凌晨发生严重火灾,导致至少6人死亡,另有5人重伤。据当地消防部门消息,该省拉卡地区一栋建筑内的两套公寓起火,消防人员在凌晨时分已控制住火势。目前火灾的具体原因尚未公布。科威特消防部门发布了公共安全提醒,呼吁各地设施业主严格…

100余所高校校长齐聚西财 共议智能时代高等教育未来

6月1日,西南财经大学百年校庆中外大学校长论坛在蓉城举行。来自厦门大学、中央财经大学、对外经济贸易大学、上海财经大学、电子科技大学、英国剑桥大学等国内外知名大学的100余位校长及专家学者齐聚一堂,共同探讨智能时代高等教育的未来。西南财经大学党委书记赵建军在发言中…

龙船漂移赛竟然还有这么多玩法 非遗遇上极限操作

龙舟不仅能劈波斩浪,还能像赛车一样倒车、漂移、丝滑过“S弯”。最近广东一场龙舟赛在网络上引起了广泛关注,网友纷纷表示这更像是水上版的《速度与激情》。在肇庆叠滘的狭窄河道里,25米长的龙舟以70度急转弯完成“神龙摆尾”,船尾几乎擦岸而过;“湾区伶仃”号上演了“蚂蚁…

萨尔布吕肯达成欧冠三连冠 樊振东加盟助力

乒乓球大满贯得主樊振东已加盟德国乒乓球甲级联赛的萨尔布吕肯俱乐部。该俱乐部曾是德国足坛老牌球队萨尔布吕肯第一足球俱乐部的乒乓球分部,直到前几年才在财务上独立运营。其标志和名称与原足球俱乐部相似,只是加上了德语“乒乓球”一词。樊振东是继柳承敏之后又一位加盟德…

著名相声演员朱文先因病去世 安徽曲艺界痛失泰斗

近日,合肥演艺集团有限公司发布讣告,安徽省著名相声表演艺术家、一级演员、原合肥市曲艺团党支部书记朱文先因病医治无效,于2025年5月31日上午9时12分在合肥逝世,享年87岁。朱文先生于1938年11月,毕生致力于相声艺术的传承与创新。1960年,他拜我国相声泰斗马三立先生的徒…

王晓晨被传婚讯后首露面 晒美照与玫瑰花

6月1日,演员王晓晨在社交媒体上晒出美照和玫瑰花,这是自她与男演员俞灏明的婚讯传出后首次公开露面。5月17日,俞灏明在社交媒体上晒出钻戒照和拉钩照,并写道:“直到你的出现,让我觉得过去承受的一切伤痛都值得!”照片中还附有文字:“晨,四个月了,我真的很想很想为你戴…