
Shiply Android应用内升级:灵活高效的版本发布解决方案
Shiply Android应用内升级功能为开发者提供了一套完整的版本发布管理工具,支持灰度放量和立即全量等发布模式,帮助开发者在确保应用稳定性的同时,高效完成新版本推送。
核心功能亮点
灰度发布能力
- 精准控制:逐步向部分用户推送新版本,降低发布风险
- 智能匹配:基于用户画像、设备特征等维度进行精准下发
- 实时监控:关键指标动态追踪,确保发布过程可控
全量升级支持
- 一键推送:快速完成全量用户版本覆盖
- 强制更新:确保关键版本及时渗透
- 版本追溯:完整记录发布历史,支持快速排查定位问题
插件地址:https://ext.dcloud.net.cn/plugin?id=21913
Shiply Android应用内升级功能为开发者提供了一套完整的版本发布管理工具,支持灰度放量和立即全量等发布模式,帮助开发者在确保应用稳定性的同时,高效完成新版本推送。
核心功能亮点
灰度发布能力
- 精准控制:逐步向部分用户推送新版本,降低发布风险
- 智能匹配:基于用户画像、设备特征等维度进行精准下发
- 实时监控:关键指标动态追踪,确保发布过程可控
全量升级支持
- 一键推送:快速完成全量用户版本覆盖
- 强制更新:确保关键版本及时渗透
- 版本追溯:完整记录发布历史,支持快速排查定位问题
插件地址:https://ext.dcloud.net.cn/plugin?id=21913
收起阅读 »
HBuilderX在ai编程时代,已经掉队了!
现在国内比较先进的ai编程大模型,例如通义灵码和Deepseek,vscode,webstorm这些编辑器都很快接入了,但hbuilderx至今还没有接入,比其他同类编辑器慢太多。而且官方貌似也不重视这个,在ai编程时代,hbuilderx已经快掉队了
现在国内比较先进的ai编程大模型,例如通义灵码和Deepseek,vscode,webstorm这些编辑器都很快接入了,但hbuilderx至今还没有接入,比其他同类编辑器慢太多。而且官方貌似也不重视这个,在ai编程时代,hbuilderx已经快掉队了

可以把uniapp 的一些公共页面抽离出来 提供给其它项目对接?
可以把uniapp 的一些公共页面抽离出来 提供给其它项目对接?
比如当前项目的 几个公共页面 a,b,c 包括里面的跳转逻辑 和 业务逻辑 然后提供给其它项目 比如 app 小程序使用
可以把uniapp 的一些公共页面抽离出来 提供给其它项目对接?
比如当前项目的 几个公共页面 a,b,c 包括里面的跳转逻辑 和 业务逻辑 然后提供给其它项目 比如 app 小程序使用

dbSearchFields uniCloud 模糊搜索字段
const dbSearchFields = ['param'] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name
getWhere() {
let that = this;
return dbSearchFields.map(name => new RegExp(that.query[name], 'i') + '.test(' + name + ')').join(' || ')
},
let newWheres =this.getWhere();
newWheres = '('+newWheres+') &&' + query;
const dbSearchFields = ['param'] // 模糊搜索字段,支持模糊搜索的字段列表。联表查询格式: 主表字段名.副表字段名,例如用户表关联角色表 role.role_name
getWhere() {
let that = this;
return dbSearchFields.map(name => new RegExp(that.query[name], 'i') + '.test(' + name + ')').join(' || ')
},
let newWheres =this.getWhere();
newWheres = '('+newWheres+') &&' + query;
收起阅读 »

15天纯手撸flutter3.27预约酒店app应用
前段时间有分享一款Uniapp+vue3跨端仿携程app酒店预订。这次带来全新研发的Flutter3.27跨平台旅行预约酒店app应用。
uni-app+vue3酒店预订app模板|uniapp+pinia2+uv-ui仿携程
效果如下
使用技术
- 编辑器:Vscode
- 技术框架:Flutter3.27.1+Dart3.6.0
- 路由/状态管理:get: ^4.6.6
- 本地缓存:get_storage: ^2.1.1
- 图片轮播组件:card_swiper^3.0.1
- 日期选择插件:syncfusion_flutter_datepicker^28.2.5
- 弹层提示:shirne_dialog^4.8.3
- 瀑布流组件:flutter_staggered_grid_view^0.7.0
- 滚动定位组件:scrollable_positioned_list^0.3.8
预订模块包括热门城市列表/位置品牌选择、入住离店日期区间选择、价格/星级选择
等功能。
项目结构图
flutter3-trip酒店预订app项目已经发布到我的原创作品小铺。
再分享三篇之前研发的flutter3跨平台实战项目。
flutter3-dymall:仿抖音直播+短视频商城|Flutter3.27实战抖音app
flutter3-winchat:桌面端聊天实例|Flutter3.x+Dart3+Getx仿微信Exe程序
flutter3-chat:聊天室|Flutter3跨平台仿微信App语音聊天/朋友圈
项目入口文件
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:shirne_dialog/shirne_dialog.dart';
import 'utils/common.dart';
// 引入布局页面
import 'layouts/index.dart';
// 引入路由配置
import 'router/index.dart';
void main() async {
// 初始化get_storage存储
await GetStorage.init();
// 初始化国际化语言
initializeDateFormatting('zh_CN');
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter3 Trip',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Color(0xFF006ff6)),
useMaterial3: true,
// 修正windows下字体不一致情况
fontFamily: Platform.isWindows ? 'Microsoft YaHei' : null
),
home: const Layout(),
// 初始化路由
initialRoute: Common.isLogin() ? '/' : '/login',
// 路由页面
getPages: routePages,
// 初始化弹窗key
navigatorKey: MyDialog.navigatorKey,
);
}
}
flutter3自定义一个滚动指示器
如下图:实现一个滚动指示槽组件。
采用 SingleChildScrollView
和 Stack
组件实现功能。
late ScrollController indicatorController = ScrollController();
// 滚动位置
double indicatorOffset = 0;
@override
void initState() {
super.initState();
indicatorController.addListener(() {
setState(() {
indicatorOffset = indicatorController.position.pixels / indicatorController.position.maxScrollExtent;
});
});
...
}
Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: indicatorController,
scrollDirection: Axis.horizontal,
child: Row(
...
),
),
),
// 指示槽
Stack(
children: [
Container(
decoration: BoxDecoration(
color: Color(0xFFE1EFFF),
borderRadius: BorderRadius.circular(50.0),
),
height: 4.0,
width: 50.0,
),
Container(
margin: EdgeInsets.only(left: indicatorOffset * 30.0),
decoration: BoxDecoration(
color: Color(0xFF006ff6),
borderRadius: BorderRadius.circular(50.0),
),
width: 20.0,
height: 4.0,
)
]
)
]
)
flutter3酒店预订模板
酒店日期区间选择,支持设置开始和结束日期,可滑动选择多个日期区间。
// 入住日期
DateTime startDate = DateTime.now();
// 离店日期
DateTime endDate = DateTime.now().add(Duration(days: 1));
GestureDetector(
child: Container(
padding: EdgeInsets.all(10.0),
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: Color(0xfff5f5f5))),
),
child: Row(
spacing: 10.0,
children: [
Icon(Icons.calendar_month_outlined),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 3.0,
children: [
Text('入住', style: TextStyle(color: Colors.grey, fontSize: 12.0)),
Text('${DateFormat('MM-dd').format(startDate)} ${DateFormat('E', 'zh_CN').format(startDate)}'),
],
),
Container(
color: Colors.grey[50],
padding: EdgeInsets.symmetric(horizontal: 5.0, vertical: 1.0),
// DateTime 类提供了 difference 方法,可以计算两个日期之间的时间差,返回一个 Duration 对象。通过 Duration 的 inDays 属性,可以获取天数差。
child: Text('共${endDate.difference(startDate).inDays}晚'),
),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
spacing: 3.0,
children: [
Text('离店', style: TextStyle(color: Colors.grey, fontSize: 12.0)),
Text('${DateFormat('MM-dd').format(endDate)} ${DateFormat('E', 'zh_CN').format(endDate)}'),
],
),
],
),
),
Icon(Icons.arrow_forward_ios_rounded, color: Colors.grey, size: 12.0,)
],
),
),
onTap: () {
handleCalendar();
}
)
Ok,综上就是flutter3实现酒店预订模板的一些知识分享,希望对大家有些帮助哈~
往期热文
vite6+tauri2.0客户端仿MacOS桌面|tauri2+rust+vue3桌面os
基于uniapp+vite5+pinia2跨端预订酒店app系统
tauri2.0桌面端后台Exe系统|tauri2+rust+vite5管理系统后台模板
基于vite5+electron31+elementPlus仿微信聊天Exe
基于uniapp+vue3+uv-ui聊天实例|uni-app+vite4仿微信app应用
作者:xiaoyan2017
链接: https://segmentfault.com/a/1190000046132699
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
前段时间有分享一款Uniapp+vue3跨端仿携程app酒店预订。这次带来全新研发的Flutter3.27跨平台旅行预约酒店app应用。
uni-app+vue3酒店预订app模板|uniapp+pinia2+uv-ui仿携程
效果如下
使用技术
- 编辑器:Vscode
- 技术框架:Flutter3.27.1+Dart3.6.0
- 路由/状态管理:get: ^4.6.6
- 本地缓存:get_storage: ^2.1.1
- 图片轮播组件:card_swiper^3.0.1
- 日期选择插件:syncfusion_flutter_datepicker^28.2.5
- 弹层提示:shirne_dialog^4.8.3
- 瀑布流组件:flutter_staggered_grid_view^0.7.0
- 滚动定位组件:scrollable_positioned_list^0.3.8
预订模块包括热门城市列表/位置品牌选择、入住离店日期区间选择、价格/星级选择
等功能。
项目结构图
flutter3-trip酒店预订app项目已经发布到我的原创作品小铺。
再分享三篇之前研发的flutter3跨平台实战项目。
flutter3-dymall:仿抖音直播+短视频商城|Flutter3.27实战抖音app
flutter3-winchat:桌面端聊天实例|Flutter3.x+Dart3+Getx仿微信Exe程序
flutter3-chat:聊天室|Flutter3跨平台仿微信App语音聊天/朋友圈
项目入口文件
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:shirne_dialog/shirne_dialog.dart';
import 'utils/common.dart';
// 引入布局页面
import 'layouts/index.dart';
// 引入路由配置
import 'router/index.dart';
void main() async {
// 初始化get_storage存储
await GetStorage.init();
// 初始化国际化语言
initializeDateFormatting('zh_CN');
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter3 Trip',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Color(0xFF006ff6)),
useMaterial3: true,
// 修正windows下字体不一致情况
fontFamily: Platform.isWindows ? 'Microsoft YaHei' : null
),
home: const Layout(),
// 初始化路由
initialRoute: Common.isLogin() ? '/' : '/login',
// 路由页面
getPages: routePages,
// 初始化弹窗key
navigatorKey: MyDialog.navigatorKey,
);
}
}
flutter3自定义一个滚动指示器
如下图:实现一个滚动指示槽组件。
采用 SingleChildScrollView
和 Stack
组件实现功能。
late ScrollController indicatorController = ScrollController();
// 滚动位置
double indicatorOffset = 0;
@override
void initState() {
super.initState();
indicatorController.addListener(() {
setState(() {
indicatorOffset = indicatorController.position.pixels / indicatorController.position.maxScrollExtent;
});
});
...
}
Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: indicatorController,
scrollDirection: Axis.horizontal,
child: Row(
...
),
),
),
// 指示槽
Stack(
children: [
Container(
decoration: BoxDecoration(
color: Color(0xFFE1EFFF),
borderRadius: BorderRadius.circular(50.0),
),
height: 4.0,
width: 50.0,
),
Container(
margin: EdgeInsets.only(left: indicatorOffset * 30.0),
decoration: BoxDecoration(
color: Color(0xFF006ff6),
borderRadius: BorderRadius.circular(50.0),
),
width: 20.0,
height: 4.0,
)
]
)
]
)
flutter3酒店预订模板
酒店日期区间选择,支持设置开始和结束日期,可滑动选择多个日期区间。
// 入住日期
DateTime startDate = DateTime.now();
// 离店日期
DateTime endDate = DateTime.now().add(Duration(days: 1));
GestureDetector(
child: Container(
padding: EdgeInsets.all(10.0),
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: Color(0xfff5f5f5))),
),
child: Row(
spacing: 10.0,
children: [
Icon(Icons.calendar_month_outlined),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 3.0,
children: [
Text('入住', style: TextStyle(color: Colors.grey, fontSize: 12.0)),
Text('${DateFormat('MM-dd').format(startDate)} ${DateFormat('E', 'zh_CN').format(startDate)}'),
],
),
Container(
color: Colors.grey[50],
padding: EdgeInsets.symmetric(horizontal: 5.0, vertical: 1.0),
// DateTime 类提供了 difference 方法,可以计算两个日期之间的时间差,返回一个 Duration 对象。通过 Duration 的 inDays 属性,可以获取天数差。
child: Text('共${endDate.difference(startDate).inDays}晚'),
),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
spacing: 3.0,
children: [
Text('离店', style: TextStyle(color: Colors.grey, fontSize: 12.0)),
Text('${DateFormat('MM-dd').format(endDate)} ${DateFormat('E', 'zh_CN').format(endDate)}'),
],
),
],
),
),
Icon(Icons.arrow_forward_ios_rounded, color: Colors.grey, size: 12.0,)
],
),
),
onTap: () {
handleCalendar();
}
)
Ok,综上就是flutter3实现酒店预订模板的一些知识分享,希望对大家有些帮助哈~
往期热文
vite6+tauri2.0客户端仿MacOS桌面|tauri2+rust+vue3桌面os
基于uniapp+vite5+pinia2跨端预订酒店app系统
tauri2.0桌面端后台Exe系统|tauri2+rust+vite5管理系统后台模板
基于vite5+electron31+elementPlus仿微信聊天Exe
基于uniapp+vue3+uv-ui聊天实例|uni-app+vite4仿微信app应用
作者:xiaoyan2017
链接: https://segmentfault.com/a/1190000046132699
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

uniapp使用i18n,踩坑记录
参考hello-i18n示例项目。存放语言包文件的的文件夹名称要为locale(和示例项目一致,locales都不行),语言包文件名称也要和示例项目保持一致(例如英文为en.json, 简中为zh-Hans.json),否则在pages.json内"%xxx%"占位不生效(在vue文件内$t()可以正常生成)
参考hello-i18n示例项目。存放语言包文件的的文件夹名称要为locale(和示例项目一致,locales都不行),语言包文件名称也要和示例项目保持一致(例如英文为en.json, 简中为zh-Hans.json),否则在pages.json内"%xxx%"占位不生效(在vue文件内$t()可以正常生成)
收起阅读 »
nvue中text标签无法自适应高度的问题
给父元素添加 justify-content: flex-start; 或者 align-items: flex-start;就可以了, 如何还是不行可以是用下面的方法
使用rich-text来解决, text标签是可以换行的, 但是没有办法撑开高度
- // 数组
- let arr = [
- {
- label: "账单编号",
- value: [
- {
- name: "div",
- attrs: {
- style: "fontSize: 16px;color: #333333;line-height: 26px;",
- },
- text: _this.payInfo.checkInId,
- },
- ],
- },
- ]
- // html
- <view
- class="similar-info-item"
- v-for="(item, index) in _this.baseInfo"
- key="index"
>
<text class="label">{{ item.label }}:</text>
<view class="con">
<rich-text :nodes="item.value"></rich-text>
</view>
</view>
// css
.similar-info-item {
min-height: 26rpx;
display: flex;
flex-direction: row;
padding-left: 12px;
margin-bottom: 4px;
.label {
width: 90px;
font-size: 16px;
color: #333333;
line-height: 26px;
}
.con {
flex: 1;
line-height: 26rpx;
display: flex;
justify-content: center;
}
}
给父元素添加 justify-content: flex-start; 或者 align-items: flex-start;就可以了, 如何还是不行可以是用下面的方法
使用rich-text来解决, text标签是可以换行的, 但是没有办法撑开高度
- // 数组
- let arr = [
- {
- label: "账单编号",
- value: [
- {
- name: "div",
- attrs: {
- style: "fontSize: 16px;color: #333333;line-height: 26px;",
- },
- text: _this.payInfo.checkInId,
- },
- ],
- },
- ]
- // html
- <view
- class="similar-info-item"
- v-for="(item, index) in _this.baseInfo"
- key="index"
>
<text class="label">{{ item.label }}:</text>
<view class="con">
<rich-text :nodes="item.value"></rich-text>
</view>
</view>
// css
.similar-info-item {
min-height: 26rpx;
display: flex;
flex-direction: row;
padding-left: 12px;
margin-bottom: 4px;
.label {
width: 90px;
font-size: 16px;
color: #333333;
line-height: 26px;
}
.con {
flex: 1;
line-height: 26rpx;
display: flex;
justify-content: center;
}
}

关于input、textarea在ios自带的输入法上快速输入时会自动失焦问题
设置属性ignoreCompositionEvent为false即可解决
设置属性ignoreCompositionEvent为false即可解决

解决邮箱无法接收验证码问题:添加白名单
当您在注册账号或绑定邮箱时,遇到邮箱无法接收验证码的情况,可能是由于邮件被误判为垃圾邮件或被邮箱服务商拦截。为了确保您能够顺利收到验证码邮件,您可以按照以下步骤将我们的邮件地址添加到您的邮箱白名单中。
1. 检查垃圾邮件文件夹
首先,请检查您的邮箱的垃圾邮件文件夹。有时候,验证码邮件可能会被误判为垃圾邮件,并被自动转移到该文件夹中。
2. 添加发件人邮箱到白名单
如果验证码邮件仍然没有出现在您的收件箱或垃圾邮件文件夹中,您可以通过以下方法将我们的发件人地址(mail.dcloud.net.cn
、mail.dcloud.io
)添加到您的邮箱白名单中。不同邮箱服务商的操作步骤可能会有所不同,以下是常见邮箱的操作方法:
1. 163邮箱
- 登录到您的 163邮箱 账号。
- 找到垃圾邮件文件夹,查看是否有验证码邮件。
- 如果找到了验证码邮件,打开邮件,然后点击“不是垃圾邮件”,系统会自动将其移回收件箱。
- 为了防止以后邮件被误判为垃圾邮件,您可以将我们的发件人邮箱添加到白名单:
- 在163邮箱主界面,点击左上角的 “设置”。
- 在设置页面,选择 “反垃圾/黑白名单” 选项卡。
- 在 “白名单设置” 中,点击 “添加白名单”,然后输入我们的发件人邮箱地址。
- 点击 “确定”。
2. QQ邮箱
- 登录到您的 QQ邮箱 账号。
- 找到垃圾邮件文件夹,查看是否有验证码邮件。
- 如果找到了验证码邮件,点击打开,然后点击 “不是垃圾邮件” 按钮,将邮件移回收件箱。
- 将我们的发件人邮箱添加到白名单:
- 在QQ邮箱的页面中,点击左上角的 “设置”。
- 在设置页面中,选择 “反垃圾” 标签。
- 在 “白名单” 部分,点击 “添加白名单”,输入我们的发件人邮箱地址。
- 点击 “保存”。
3. Gmail
- 打开Gmail,登录您的账号。
- 找到垃圾邮件文件夹,查看是否有我们的验证码邮件。
- 如果找到了验证码邮件,点击打开邮件。
- 点击邮件顶部的“更多”按钮(三个垂直点),选择“将发件人加入白名单”。
- 如果您没有找到邮件,可以添加我们的发件人地址到您的联系人列表中,这样未来的邮件就不会被误判为垃圾邮件。
4. Outlook
- 打开Outlook,登录您的账号。
- 进入“垃圾邮件”文件夹,查看是否有验证码邮件。
- 如果找到邮件,右键点击邮件,选择“标记为非垃圾邮件”。
- 您还可以手动将我们的发件人地址添加到“安全发件人”列表:
- 点击“设置”(齿轮图标),选择“查看所有 Outlook 设置”。
- 在“邮件”选项中,选择“垃圾邮件”。
- 在“安全发件人和域名”部分,点击“添加”并输入我们的发件人邮箱地址。
5. 其他邮箱服务
对于其他邮箱服务,您可以查看其帮助文档或联系其客服,了解如何将发件人邮箱地址添加到白名单中。大多数邮箱都有类似的垃圾邮件过滤和白名单设置选项。
3. 联系我们
如果您已按照上述步骤操作,但仍然无法收到验证码邮件,欢迎通过我们的客服邮箱(service@dcloud.io
)与我们联系,我们将尽力为您解决问题。
当您在注册账号或绑定邮箱时,遇到邮箱无法接收验证码的情况,可能是由于邮件被误判为垃圾邮件或被邮箱服务商拦截。为了确保您能够顺利收到验证码邮件,您可以按照以下步骤将我们的邮件地址添加到您的邮箱白名单中。
1. 检查垃圾邮件文件夹
首先,请检查您的邮箱的垃圾邮件文件夹。有时候,验证码邮件可能会被误判为垃圾邮件,并被自动转移到该文件夹中。
2. 添加发件人邮箱到白名单
如果验证码邮件仍然没有出现在您的收件箱或垃圾邮件文件夹中,您可以通过以下方法将我们的发件人地址(mail.dcloud.net.cn
、mail.dcloud.io
)添加到您的邮箱白名单中。不同邮箱服务商的操作步骤可能会有所不同,以下是常见邮箱的操作方法:
1. 163邮箱
- 登录到您的 163邮箱 账号。
- 找到垃圾邮件文件夹,查看是否有验证码邮件。
- 如果找到了验证码邮件,打开邮件,然后点击“不是垃圾邮件”,系统会自动将其移回收件箱。
- 为了防止以后邮件被误判为垃圾邮件,您可以将我们的发件人邮箱添加到白名单:
- 在163邮箱主界面,点击左上角的 “设置”。
- 在设置页面,选择 “反垃圾/黑白名单” 选项卡。
- 在 “白名单设置” 中,点击 “添加白名单”,然后输入我们的发件人邮箱地址。
- 点击 “确定”。
2. QQ邮箱
- 登录到您的 QQ邮箱 账号。
- 找到垃圾邮件文件夹,查看是否有验证码邮件。
- 如果找到了验证码邮件,点击打开,然后点击 “不是垃圾邮件” 按钮,将邮件移回收件箱。
- 将我们的发件人邮箱添加到白名单:
- 在QQ邮箱的页面中,点击左上角的 “设置”。
- 在设置页面中,选择 “反垃圾” 标签。
- 在 “白名单” 部分,点击 “添加白名单”,输入我们的发件人邮箱地址。
- 点击 “保存”。
3. Gmail
- 打开Gmail,登录您的账号。
- 找到垃圾邮件文件夹,查看是否有我们的验证码邮件。
- 如果找到了验证码邮件,点击打开邮件。
- 点击邮件顶部的“更多”按钮(三个垂直点),选择“将发件人加入白名单”。
- 如果您没有找到邮件,可以添加我们的发件人地址到您的联系人列表中,这样未来的邮件就不会被误判为垃圾邮件。
4. Outlook
- 打开Outlook,登录您的账号。
- 进入“垃圾邮件”文件夹,查看是否有验证码邮件。
- 如果找到邮件,右键点击邮件,选择“标记为非垃圾邮件”。
- 您还可以手动将我们的发件人地址添加到“安全发件人”列表:
- 点击“设置”(齿轮图标),选择“查看所有 Outlook 设置”。
- 在“邮件”选项中,选择“垃圾邮件”。
- 在“安全发件人和域名”部分,点击“添加”并输入我们的发件人邮箱地址。
5. 其他邮箱服务
对于其他邮箱服务,您可以查看其帮助文档或联系其客服,了解如何将发件人邮箱地址添加到白名单中。大多数邮箱都有类似的垃圾邮件过滤和白名单设置选项。
3. 联系我们
如果您已按照上述步骤操作,但仍然无法收到验证码邮件,欢迎通过我们的客服邮箱(service@dcloud.io
)与我们联系,我们将尽力为您解决问题。

Uniapp cli项目引用UTS插件(基于uniapp x)的一些异常问题
1.[plugin:uni:uts-uni_modules] compiler.compile is not a function
2.createUniXKotlinCompilerOnce is not a function
3.Definite Assignment Assertions is not supported.
我当前的环境:
HBuilderX版本:4.24
cli 的@dcloudio/uni-app版本: 3.0.0-4020420240722002
首先检查package.json中的@dcloudio/uni-uts-v1是否和别的@dcloudio/uni-xxx版本不一致,需要保持一致
如果有异常就执行下hx 菜单栏 -> 工具 -> 插件安装 -> 卸载重装uni-app(vue3),最好是让hx自动触发重新下载
上面的执行后还有问题可以尝试把uts相关的都删除重新安装一次,感觉像是有安装顺序的问题,我全部删除重新安装后就没问题了,不知道是啥原因造成的
#package.json的部分配置
"devDependencies": {
"@dcloudio/types": "3.4.8",
"@dcloudio/uni-automator": "3.0.0-4020420240722002",
"@dcloudio/uni-cli-shared": "3.0.0-4020420240722002",
"@dcloudio/uni-stacktracey": "3.0.0-4020420240722002",
###这个需要和其他的保持一样
"@dcloudio/uni-uts-v1": "3.0.0-4020420240722002",
###
"@dcloudio/vite-plugin-uni": "3.0.0-4020420240722002",
...
},
https://ask.dcloud.net.cn/question/195186
https://ask.dcloud.net.cn/question/202241
1.[plugin:uni:uts-uni_modules] compiler.compile is not a function
2.createUniXKotlinCompilerOnce is not a function
3.Definite Assignment Assertions is not supported.
我当前的环境:
HBuilderX版本:4.24
cli 的@dcloudio/uni-app版本: 3.0.0-4020420240722002
首先检查package.json中的@dcloudio/uni-uts-v1是否和别的@dcloudio/uni-xxx版本不一致,需要保持一致
如果有异常就执行下hx 菜单栏 -> 工具 -> 插件安装 -> 卸载重装uni-app(vue3),最好是让hx自动触发重新下载
上面的执行后还有问题可以尝试把uts相关的都删除重新安装一次,感觉像是有安装顺序的问题,我全部删除重新安装后就没问题了,不知道是啥原因造成的
#package.json的部分配置
"devDependencies": {
"@dcloudio/types": "3.4.8",
"@dcloudio/uni-automator": "3.0.0-4020420240722002",
"@dcloudio/uni-cli-shared": "3.0.0-4020420240722002",
"@dcloudio/uni-stacktracey": "3.0.0-4020420240722002",
###这个需要和其他的保持一样
"@dcloudio/uni-uts-v1": "3.0.0-4020420240722002",
###
"@dcloudio/vite-plugin-uni": "3.0.0-4020420240722002",
...
},
https://ask.dcloud.net.cn/question/195186
https://ask.dcloud.net.cn/question/202241