HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

ReferenceError: uni is not defined

uni_app项目

ReferenceError: uni is not defined
at _callee2$ (utils.js? [sm]:21)
at s (regeneratorRuntime.js:1)
at Generator.<anonymous> (regeneratorRuntime.js:1)
at Generator.next (regeneratorRuntime.js:1)
at asyncGeneratorStep (asyncToGenerator.js:1)
at c (asyncToGenerator.js:1)
at asyncToGenerator.js:1
at new Promise (<anonymous>)
at Object.<anonymous> (asyncToGenerator.js:1)
at Object._setSs (utils.js? [sm]:22)(env: Windows,mp,1.06.2409140; lib: 3.8.3)

如果出现这个问题,不要把那些js文件放在static下面
类似我放的那个图,一开始utils文件夹在static目录下,拿出来就好了

继续阅读 »

ReferenceError: uni is not defined
at _callee2$ (utils.js? [sm]:21)
at s (regeneratorRuntime.js:1)
at Generator.<anonymous> (regeneratorRuntime.js:1)
at Generator.next (regeneratorRuntime.js:1)
at asyncGeneratorStep (asyncToGenerator.js:1)
at c (asyncToGenerator.js:1)
at asyncToGenerator.js:1
at new Promise (<anonymous>)
at Object.<anonymous> (asyncToGenerator.js:1)
at Object._setSs (utils.js? [sm]:22)(env: Windows,mp,1.06.2409140; lib: 3.8.3)

如果出现这个问题,不要把那些js文件放在static下面
类似我放的那个图,一开始utils文件夹在static目录下,拿出来就好了

收起阅读 »

iOS App 上架没Mac怎么办?我的解决方案经验分享

iOS

'''### 从租云Mac到自动化上传工具,记录一个跨平台开发者避坑苹果生态的真实历程。


我自己是做Flutter开发的,平时项目跑在Android上都很顺利。但要把App上架到App Store时,真的被“苹果生态”这一套整晕了。

你以为发布App只是打包然后上传?不,苹果告诉你——要先买开发者账号,再搞开发证书、发布证书、签名文件,然后你还得用Xcode登录才能传IPA。
我不是没想配台Mac,但对我这种一年发布1-2次iOS应用的开发者来说,这个投入太不划算。

所以我开始尝试各种“非Mac上架方案”,以下是我的真实踩坑与替代路径。


方案一:租用云Mac

很多人第一反应就是:那我租台Mac吧!于是尝试了 MacStadium、MacInCloud 这类服务。

优点:

  • 正规Xcode开发环境,100%兼容苹果上传要求
  • 可以通过远程桌面登录使用

问题在于:

  • 延迟高,上传过程常中断
  • 国内访问这些服务不稳定,经常卡死
  • 配置开发证书时,有时候操作不当会导致证书丢失,要重头再来
  • 按小时计费,成本不低,体验像是在租个情绪化的同事:你不确定它哪一刻会出错

所以除非你是长期需要远程Mac环境的团队,否则不推荐个人开发者尝试。


方案二:找朋友/外包代上架

我一开始也想“蹭一下朋友的Mac”,结果发现:

  • 朋友虽然愿意帮忙,但需要我手动导出证书、生成描述文件,还得给他操作文档
  • 一出错就是来回截图解释,沟通成本极高
  • 而且这种方式缺乏持续性,下一次就不一定找得到人了

方案三:使用自动化上传工具(例如APP开发助手)

后来我无意中在GitHub和博客里刷到了这个工具:APP开发助手。看了下介绍,主要功能有:

  • Windows、Linux、Mac三平台支持
  • 账号登录、证书生成、p12导出、Profile自动化配置
  • IPA签名与上传,一步步图形化界面指引

我第一次用是在一个React Native项目中,整个流程:

  1. 填写开发者账号(Apple ID)
  2. 添加Bundle ID
  3. 获取设备UDID
  4. 添加描述文件,下载生成的证书和描述文件
  5. 使用HBuilder进行打包操作,上架App Store

全程不到一小时,对比我用云Mac上架App花3小时还失败一次的经历,可以说是极大的提升。


日常分享:

帮客户上线一个工具类App,项目完全在Windows上开发完成。对方只提供了IPA文件和开发者账号。
我用APP开发助手顺利处理完上传。重点是,它还能检测API兼容性和必要性字段(如版本号、Bundle ID),让我避免了一次审核退回。
客户都以为我用了什么神秘工具,其实就是这套流程背后做了智能封装。


总结:适合你的才是“最佳方案”

对于独立开发者、小型团队,App上架是一件重要但又高频度不高的事。没必要为此投入Mac设备或长期云服务。

以下是我个人建议:

使用场景 推荐方案
团队协作、有CI/CD需求 配置Fastlane + Mac服务器
偶尔发布、无Mac APP开发助手类图形工具
不懂配置、想快速解决 使用代上架服务(需信任度)
熟悉苹果生态、发布频繁 自购Mac + Xcode最稳妥

iOS上架确实门槛高,但并不是不可逾越。
工具的存在就是为了让流程更平滑。希望这篇文章能给也在为此头疼的开发者一些实际参考。

如果你也有过类似困扰,欢迎留言交流。你是怎么把App发布上App Store的?'''

继续阅读 »

'''### 从租云Mac到自动化上传工具,记录一个跨平台开发者避坑苹果生态的真实历程。


我自己是做Flutter开发的,平时项目跑在Android上都很顺利。但要把App上架到App Store时,真的被“苹果生态”这一套整晕了。

你以为发布App只是打包然后上传?不,苹果告诉你——要先买开发者账号,再搞开发证书、发布证书、签名文件,然后你还得用Xcode登录才能传IPA。
我不是没想配台Mac,但对我这种一年发布1-2次iOS应用的开发者来说,这个投入太不划算。

所以我开始尝试各种“非Mac上架方案”,以下是我的真实踩坑与替代路径。


方案一:租用云Mac

很多人第一反应就是:那我租台Mac吧!于是尝试了 MacStadium、MacInCloud 这类服务。

优点:

  • 正规Xcode开发环境,100%兼容苹果上传要求
  • 可以通过远程桌面登录使用

问题在于:

  • 延迟高,上传过程常中断
  • 国内访问这些服务不稳定,经常卡死
  • 配置开发证书时,有时候操作不当会导致证书丢失,要重头再来
  • 按小时计费,成本不低,体验像是在租个情绪化的同事:你不确定它哪一刻会出错

所以除非你是长期需要远程Mac环境的团队,否则不推荐个人开发者尝试。


方案二:找朋友/外包代上架

我一开始也想“蹭一下朋友的Mac”,结果发现:

  • 朋友虽然愿意帮忙,但需要我手动导出证书、生成描述文件,还得给他操作文档
  • 一出错就是来回截图解释,沟通成本极高
  • 而且这种方式缺乏持续性,下一次就不一定找得到人了

方案三:使用自动化上传工具(例如APP开发助手)

后来我无意中在GitHub和博客里刷到了这个工具:APP开发助手。看了下介绍,主要功能有:

  • Windows、Linux、Mac三平台支持
  • 账号登录、证书生成、p12导出、Profile自动化配置
  • IPA签名与上传,一步步图形化界面指引

我第一次用是在一个React Native项目中,整个流程:

  1. 填写开发者账号(Apple ID)
  2. 添加Bundle ID
  3. 获取设备UDID
  4. 添加描述文件,下载生成的证书和描述文件
  5. 使用HBuilder进行打包操作,上架App Store

全程不到一小时,对比我用云Mac上架App花3小时还失败一次的经历,可以说是极大的提升。


日常分享:

帮客户上线一个工具类App,项目完全在Windows上开发完成。对方只提供了IPA文件和开发者账号。
我用APP开发助手顺利处理完上传。重点是,它还能检测API兼容性和必要性字段(如版本号、Bundle ID),让我避免了一次审核退回。
客户都以为我用了什么神秘工具,其实就是这套流程背后做了智能封装。


总结:适合你的才是“最佳方案”

对于独立开发者、小型团队,App上架是一件重要但又高频度不高的事。没必要为此投入Mac设备或长期云服务。

以下是我个人建议:

使用场景 推荐方案
团队协作、有CI/CD需求 配置Fastlane + Mac服务器
偶尔发布、无Mac APP开发助手类图形工具
不懂配置、想快速解决 使用代上架服务(需信任度)
熟悉苹果生态、发布频繁 自购Mac + Xcode最稳妥

iOS上架确实门槛高,但并不是不可逾越。
工具的存在就是为了让流程更平滑。希望这篇文章能给也在为此头疼的开发者一些实际参考。

如果你也有过类似困扰,欢迎留言交流。你是怎么把App发布上App Store的?'''

收起阅读 »

iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录

iOS

'''## iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录

最近负责一个 iOS App 的调试任务,遇到了 HTTPS 接口抓包难题,顺手做个记录,顺带分享一些试过的工具和方案。

背景

这个 App 启用了 HTTPS 双向认证和证书 pinning,很多传统的抓包方法都失效。起初只是想看看接口返回结构,但发现普通的代理类工具根本看不到请求内容。项目紧急,只能开始四处试工具。

尝试的工具/方案

1. Charles

大家都熟,用了很多年。但这次基本抓不到东西,主要原因是:

  • App 拒绝代理连接
  • 系统层面有弹窗/信任证书问题
  • 部分请求是走私有栈,直接绕过系统代理了

2. Proxyman

UI 比 Charles 好很多,对规则支持也不错,但在 iOS 15+ 上和 Charles 一样,抓包成功率不高。对有 pinning 的应用基本无解。

3. Wireshark

更偏向协议分析工具,不适合实际项目中做应用层调试。偶尔用来查看端口是否真的建立连接。

4. 其他工具

在群里有人提到一个叫 Sniffmaster 的工具。我起初是抱着试一试的心态用的,结果还真能看到 HTTPS 包内容,甚至带 response body。

它的工作机制看起来不是基于代理,而是更底层一点。好处是绕开了 pinning 和描述文件限制,对一些安全防护重的 App 比较友好。

实际测试下来,还能用 JS 写拦截脚本对请求和响应做一些定制化修改,比如模拟服务器故障、响应内容异常等场景,用来测前端兜底逻辑还挺方便。


一个小例子

我们调了一个转账接口,后端返回是这样的:

json复制编辑{  
  "code": "0000",  
  "message": "Success",  
  "balance": 18423.67  
}

用脚本把 balance 改成了负数 + code 改成异常码,重新走了一遍流程,前端果然弹出了兜底页面,顺利验证完毕。


总结

这次的抓包过程还是有不少坑,感触最深的是:

  • 模拟器能抓不代表真机能抓
  • HTTPS + Pinning 是现在很多 App 的标配,代理类工具逐渐没那么万能了
  • 工具没有最好,只有适合自己项目的

建议配置两种类型工具备用:
代理型(如 Charles、Proxyman)用于调试内部测试包
非代理型(如 Sniffmaster)用于应对上架版或安全策略更强的场景

以上是我这次的一点踩坑记录,希望对同样在调 HTTPS 的开发者有帮助。


如果你也有好用的抓包方案或脚本工具,欢迎评论区交流。'''

继续阅读 »

'''## iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录

最近负责一个 iOS App 的调试任务,遇到了 HTTPS 接口抓包难题,顺手做个记录,顺带分享一些试过的工具和方案。

背景

这个 App 启用了 HTTPS 双向认证和证书 pinning,很多传统的抓包方法都失效。起初只是想看看接口返回结构,但发现普通的代理类工具根本看不到请求内容。项目紧急,只能开始四处试工具。

尝试的工具/方案

1. Charles

大家都熟,用了很多年。但这次基本抓不到东西,主要原因是:

  • App 拒绝代理连接
  • 系统层面有弹窗/信任证书问题
  • 部分请求是走私有栈,直接绕过系统代理了

2. Proxyman

UI 比 Charles 好很多,对规则支持也不错,但在 iOS 15+ 上和 Charles 一样,抓包成功率不高。对有 pinning 的应用基本无解。

3. Wireshark

更偏向协议分析工具,不适合实际项目中做应用层调试。偶尔用来查看端口是否真的建立连接。

4. 其他工具

在群里有人提到一个叫 Sniffmaster 的工具。我起初是抱着试一试的心态用的,结果还真能看到 HTTPS 包内容,甚至带 response body。

它的工作机制看起来不是基于代理,而是更底层一点。好处是绕开了 pinning 和描述文件限制,对一些安全防护重的 App 比较友好。

实际测试下来,还能用 JS 写拦截脚本对请求和响应做一些定制化修改,比如模拟服务器故障、响应内容异常等场景,用来测前端兜底逻辑还挺方便。


一个小例子

我们调了一个转账接口,后端返回是这样的:

json复制编辑{  
  "code": "0000",  
  "message": "Success",  
  "balance": 18423.67  
}

用脚本把 balance 改成了负数 + code 改成异常码,重新走了一遍流程,前端果然弹出了兜底页面,顺利验证完毕。


总结

这次的抓包过程还是有不少坑,感触最深的是:

  • 模拟器能抓不代表真机能抓
  • HTTPS + Pinning 是现在很多 App 的标配,代理类工具逐渐没那么万能了
  • 工具没有最好,只有适合自己项目的

建议配置两种类型工具备用:
代理型(如 Charles、Proxyman)用于调试内部测试包
非代理型(如 Sniffmaster)用于应对上架版或安全策略更强的场景

以上是我这次的一点踩坑记录,希望对同样在调 HTTPS 的开发者有帮助。


如果你也有好用的抓包方案或脚本工具,欢迎评论区交流。'''

收起阅读 »

uniapp 编译为app之后如何监听程序退出/杀死。

uniapp

uniapp 编译为app之后如何监听程序退出/杀死。

uniapp 编译为app之后如何监听程序退出/杀死。

ITMS-90725: SDK version issue,app was built with the iOS 17.5 SDK,must iOS 18 SDK or later 错误解决办法

Appstore上传


最近提交上架ios app store 出现这个问题大家是如何解决的?
apple给的错误邮件提示如下:
 

Please correct the following issues and upload a new binary to App Store Connect.

ITMS-90725: SDK version issue - This app was built with the iOS 17.5 SDK. All iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution.

Apple Developer Relations  

我用appuploader提交上架显示成功,但是apple发邮件提示ios sdk版本问题,开发工具是用的uniapp 开发,hbuilder。

开始我以为是appuploader问题,后面发现是hbuilder更新的问题。

解决办法:

更新HBuilder开发工具到最新版本,然后还要执行依赖管理工具,使用下面命令

npx @dcloudio/uvm@latest

要注意的点是这个命令很可能失败,注意用梯子或者选择cn的节点进行,更新成功才行。单独更新hbuilder,不更新依赖管理无法解决这个问题。

继续阅读 »


最近提交上架ios app store 出现这个问题大家是如何解决的?
apple给的错误邮件提示如下:
 

Please correct the following issues and upload a new binary to App Store Connect.

ITMS-90725: SDK version issue - This app was built with the iOS 17.5 SDK. All iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution.

Apple Developer Relations  

我用appuploader提交上架显示成功,但是apple发邮件提示ios sdk版本问题,开发工具是用的uniapp 开发,hbuilder。

开始我以为是appuploader问题,后面发现是hbuilder更新的问题。

解决办法:

更新HBuilder开发工具到最新版本,然后还要执行依赖管理工具,使用下面命令

npx @dcloudio/uvm@latest

要注意的点是这个命令很可能失败,注意用梯子或者选择cn的节点进行,更新成功才行。单独更新hbuilder,不更新依赖管理无法解决这个问题。

收起阅读 »

招聘 uni-app开发工程师(西安)

uni_app

岗位职责:
1.使用 UniApp 和 Vue 3 开发高质量的多端兼容应用。
2.实现大屏数据可视化界面,能够编写简单的 CSS 动画。
3.利用 ECharts 和 G6 等图表库进行数据可视化。
4.与设计团队紧密合作,确保前端界面美观且符合用户体验标准。
5.优化现有项目的性能,提升用户体验。
6.参与代码审查,确保代码质量和团队协作。

任职资格:
1.本科及以上学历,计算机或相关专业,至少3年以上前端开发经验,特别是使用 Vue 3 和 UniApp 的经验。
2.熟练掌握APP、小程序开发流程,多端兼容优先。
3.熟悉 HTML5, CSS3, JavaScript (ES6+),有使用 ECharts 和 G6 等数据可视化工具的经验,能够编写简单的 CSS 动画。
4.对 Element Plus、Ant Design、uView 或 iView 有深入理解和实际项目经验。
5.优秀的沟通能力和团队合作精神。

简历请投递:ghn@ruixuejiaoyu.vip

继续阅读 »

岗位职责:
1.使用 UniApp 和 Vue 3 开发高质量的多端兼容应用。
2.实现大屏数据可视化界面,能够编写简单的 CSS 动画。
3.利用 ECharts 和 G6 等图表库进行数据可视化。
4.与设计团队紧密合作,确保前端界面美观且符合用户体验标准。
5.优化现有项目的性能,提升用户体验。
6.参与代码审查,确保代码质量和团队协作。

任职资格:
1.本科及以上学历,计算机或相关专业,至少3年以上前端开发经验,特别是使用 Vue 3 和 UniApp 的经验。
2.熟练掌握APP、小程序开发流程,多端兼容优先。
3.熟悉 HTML5, CSS3, JavaScript (ES6+),有使用 ECharts 和 G6 等数据可视化工具的经验,能够编写简单的 CSS 动画。
4.对 Element Plus、Ant Design、uView 或 iView 有深入理解和实际项目经验。
5.优秀的沟通能力和团队合作精神。

简历请投递:ghn@ruixuejiaoyu.vip

收起阅读 »

【已解决】云打包 iOS SDK 需要 18 或更高的问题

我升级到了最新的稳定版本,然后费劲九牛二虎之力下载了云打包的相关插件(自动提示下载的,一直下载中【估计本机环境问题】......反复操作,折腾下载了24小时),然后最关键的一步:

执行:
npx @dcloudio/uvm@latest

打包后,目前 apple transportor 还没报问题【我点了手动“验证”】,应该不会再报这个错了:

SDK version issue. This app was built with the iOS 17.5 SDK. All iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution. (90725)

继续阅读 »

我升级到了最新的稳定版本,然后费劲九牛二虎之力下载了云打包的相关插件(自动提示下载的,一直下载中【估计本机环境问题】......反复操作,折腾下载了24小时),然后最关键的一步:

执行:
npx @dcloudio/uvm@latest

打包后,目前 apple transportor 还没报问题【我点了手动“验证”】,应该不会再报这个错了:

SDK version issue. This app was built with the iOS 17.5 SDK. All iOS and iPadOS apps must be built with the iOS 18 SDK or later, included in Xcode 16 or later, in order to be uploaded to App Store Connect or submitted for distribution. (90725)

收起阅读 »

【2025精简版】iOS原生插件拓展秘籍

扩展小程序原生能力

官方的ios原生项目简介使用插件工程的做法在XCode16往往会遇到问题
如果你无需开发插件包,而且使用离线打包,那可以跳过很多繁琐的步骤

其实很简单,仅需要在原先离线包中AppDelegate.m所在的目录下添加一个<TestModule>.m文件,引入"DCUniModule.h", 便可完成

#import <Foundation/Foundation.h>  
// 引入 DCUniModule.h 头文件  
#import "DCUniModule.h"  

@interface TestModule : DCUniModule  

@end  

UNI_EXPORT_METHOD(@selector(init:callback:))  

- (void)init:(NSDictionary *)options callback:(UniModuleKeepAliveCallback)callback {  
    if (callback) {  
        callback(@{@"status": @"initialized"}, NO);  
    }  
}

完成之后用官方教程配置原生插件
这里需要的插件id可以随便选

继续阅读 »

官方的ios原生项目简介使用插件工程的做法在XCode16往往会遇到问题
如果你无需开发插件包,而且使用离线打包,那可以跳过很多繁琐的步骤

其实很简单,仅需要在原先离线包中AppDelegate.m所在的目录下添加一个<TestModule>.m文件,引入"DCUniModule.h", 便可完成

#import <Foundation/Foundation.h>  
// 引入 DCUniModule.h 头文件  
#import "DCUniModule.h"  

@interface TestModule : DCUniModule  

@end  

UNI_EXPORT_METHOD(@selector(init:callback:))  

- (void)init:(NSDictionary *)options callback:(UniModuleKeepAliveCallback)callback {  
    if (callback) {  
        callback(@{@"status": @"initialized"}, NO);  
    }  
}

完成之后用官方教程配置原生插件
这里需要的插件id可以随便选

收起阅读 »

关于H5空白页 找了半天故障 交给claude3.7 几分钟解决了

h5

项目使用了一个特殊的 Vue 结构,其中 App.vue 不是直接呈现页面,而是包含一个 App 组件
修复 main.js 中的一些兼容性问题import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'

// 处理兼容性问题
// #ifdef H5
// 修复 H5 空白页面问题的全局处理
window.addEventListener('DOMContentLoaded', () => {
// 处理初始化加载问题
if (!location.hash || location.hash === '#/') {
// 如果是空hash,尝试恢复到登录页
setTimeout(() => {
const token = uni.getStorageSync('token');
if (!token) {
location.replace(location.pathname + '#/pages/login/login');
}
}, 200);
}
});
// #endif

// 添加全局导航守卫
const whiteList = ['/pages/login/login', '/pages/register/register', '/pages/forget-password/forget-password']

// 处理路由路径,确保正确处理绝对和相对路径
Vue.prototype.$normalizePath = function(url) {
// 如果已经是绝对路径(以/开头),则返回
if (url.startsWith('/')) {
return url;
}
// 否则转换为绝对路径
return '/' + url;
}

Vue.prototype.$checkLogin = function() {
const token = uni.getStorageSync('token')
const userInfo = uni.getStorageSync('userInfo')

// 清理可能存在的mock数据
if (token && token.includes('mock')) {
uni.removeStorageSync('token')
uni.removeStorageSync('userInfo')
return false
}

return token && userInfo && userInfo.userId
}

Vue.prototype.$navigateTo = function(url) {
// 标准化路径
const normalizedUrl = this.$normalizePath(url);

if (!this.$checkLogin() && !whiteList.some(path => normalizedUrl.includes(path))) {
uni.reLaunch({
url: '/pages/login/login'
})
return
}
uni.navigateTo({
url: normalizedUrl
})
}

// #ifdef H5
// 添加全局异常处理
window.addEventListener('error', (e) => {
console.error('全局错误:', e);
// 可以在这里添加错误上报逻辑
});
// #endif

const app = new Vue({
...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif复了 App.vue 的模板结构,保持 <App :keepAliveInclude="keepAliveInclude"> 的原有格式,并将通知弹窗移到内部
添加了 keepAliveInclude 属性,用于缓存主要页面(提高性能)
在 main.js 中添加了全局 DOMContentLoaded 事件处理,修复空白页面问题

继续阅读 »

项目使用了一个特殊的 Vue 结构,其中 App.vue 不是直接呈现页面,而是包含一个 App 组件
修复 main.js 中的一些兼容性问题import App from './App'

// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'

// 处理兼容性问题
// #ifdef H5
// 修复 H5 空白页面问题的全局处理
window.addEventListener('DOMContentLoaded', () => {
// 处理初始化加载问题
if (!location.hash || location.hash === '#/') {
// 如果是空hash,尝试恢复到登录页
setTimeout(() => {
const token = uni.getStorageSync('token');
if (!token) {
location.replace(location.pathname + '#/pages/login/login');
}
}, 200);
}
});
// #endif

// 添加全局导航守卫
const whiteList = ['/pages/login/login', '/pages/register/register', '/pages/forget-password/forget-password']

// 处理路由路径,确保正确处理绝对和相对路径
Vue.prototype.$normalizePath = function(url) {
// 如果已经是绝对路径(以/开头),则返回
if (url.startsWith('/')) {
return url;
}
// 否则转换为绝对路径
return '/' + url;
}

Vue.prototype.$checkLogin = function() {
const token = uni.getStorageSync('token')
const userInfo = uni.getStorageSync('userInfo')

// 清理可能存在的mock数据
if (token && token.includes('mock')) {
uni.removeStorageSync('token')
uni.removeStorageSync('userInfo')
return false
}

return token && userInfo && userInfo.userId
}

Vue.prototype.$navigateTo = function(url) {
// 标准化路径
const normalizedUrl = this.$normalizePath(url);

if (!this.$checkLogin() && !whiteList.some(path => normalizedUrl.includes(path))) {
uni.reLaunch({
url: '/pages/login/login'
})
return
}
uni.navigateTo({
url: normalizedUrl
})
}

// #ifdef H5
// 添加全局异常处理
window.addEventListener('error', (e) => {
console.error('全局错误:', e);
// 可以在这里添加错误上报逻辑
});
// #endif

const app = new Vue({
...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif复了 App.vue 的模板结构,保持 <App :keepAliveInclude="keepAliveInclude"> 的原有格式,并将通知弹窗移到内部
添加了 keepAliveInclude 属性,用于缓存主要页面(提高性能)
在 main.js 中添加了全局 DOMContentLoaded 事件处理,修复空白页面问题

收起阅读 »

【待验证】h5打包到服务器打开显示:连接服务器超时,点击屏幕重试

h5
// manifest.json  
{  
    "h5" : {  
        "async" : {  
            "timeout" : 60000  // 页面 js 加载超时时间(超时后展示 error 对应的组件)  
    }  
    }  
}
继续阅读 »
// manifest.json  
{  
    "h5" : {  
        "async" : {  
            "timeout" : 60000  // 页面 js 加载超时时间(超时后展示 error 对应的组件)  
    }  
    }  
}
收起阅读 »

个人开发者承接app、小程序、网页外包,全职外包接单

小程序 外包 uniapp

全职在家承接外包,多年外包经验,个人开发者,绝对实惠靠谱,有很多款线上应用(度是自己开发的,自己独立完成,可查)

可做商城类,社交类,工具类,任务平台类,mes 类,扫码收银/分账交易类 等,除了游戏和带颜色的,其他度可以开发

可承接安卓/IOS、各个端的小程序、H5网页、PC网页开发,从前端到后端,我全度会,一条龙服务

掌握技术
前端:uniapp 、uniappx、vue
后端:Golang 、php

有需要开发的并能看得上我的请联系我哈

vx:wu1020yt

继续阅读 »

全职在家承接外包,多年外包经验,个人开发者,绝对实惠靠谱,有很多款线上应用(度是自己开发的,自己独立完成,可查)

可做商城类,社交类,工具类,任务平台类,mes 类,扫码收银/分账交易类 等,除了游戏和带颜色的,其他度可以开发

可承接安卓/IOS、各个端的小程序、H5网页、PC网页开发,从前端到后端,我全度会,一条龙服务

掌握技术
前端:uniapp 、uniappx、vue
后端:Golang 、php

有需要开发的并能看得上我的请联系我哈

vx:wu1020yt

收起阅读 »

专为在线教育、知识付费、视频娱乐、新闻媒体等行业提供H5、小程序、APP开发服务

公司拥有专业技术团队,配备前后端技术开发人员,是您首选的合作服务商。
公司专为在线教育、知识付费、视频娱乐、新闻媒体等行业提供网站、小程序、APP开发服务!
公司主要软件有:知识付费系统AI题库系统头条媒体系统短视频系统小商城系统
我们秉承用心服务,专业专注原则,致力于为用户提供安全省心的解决方案;为用户搭建更专业、更省钱的网络服务平台!

咨询合作微信:yddapps,服务电话:400-811-9102

继续阅读 »

公司拥有专业技术团队,配备前后端技术开发人员,是您首选的合作服务商。
公司专为在线教育、知识付费、视频娱乐、新闻媒体等行业提供网站、小程序、APP开发服务!
公司主要软件有:知识付费系统AI题库系统头条媒体系统短视频系统小商城系统
我们秉承用心服务,专业专注原则,致力于为用户提供安全省心的解决方案;为用户搭建更专业、更省钱的网络服务平台!

咨询合作微信:yddapps,服务电话:400-811-9102

收起阅读 »