HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

nvue页面内单文件组件的国际化

先上场景案例:

nvue 页面中的弹窗组件 up-popup, 初始状态不显示 , 使用nvue国际化方案, 页面进入后, 不打开弹窗前就修语言, 回到该页面,打开弹窗, 则显示的是 修改前的语言

uni-i18n源代码原因:t 是惰性的

let t = (key, values) => {  
        if (typeof getApp !== 'function') {  
            // app view  
            /* eslint-disable no-func-assign */  
            t = function (key, values) {  
                return i18n.t(key, values);  
            };  
        }  
        else {  
            let isWatchedAppLocale = false;  
            t = function (key, values) {  
                const appVm = getApp().$vm;  

                if (appVm) {  
                    // 触发响应式  
                    appVm.$locale;  
                    if (!isWatchedAppLocale) {  
                        isWatchedAppLocale = true;  
                        watchAppLocale(appVm, i18n);  
                    }  
                }  
                return i18n.t(key, values);  
            };  
        }  
        return t(key, values);  
    };

我的解决方案:预热 t, 打破惰性

方案:

onMounted(() => {  
    t('appName');  
  });  

封装 hook

import { onMounted } from 'vue';  

/**  
 * @name useNvueI18nWarmup  
 * @description 一个旨在处理 nvue 页面中 i18n 响应式问题的组合式函数, 预热国际化 t,打破 t 的惰性。  
 */  
export function useNvueI18nWarmup(t: (key: string) => string) {  
  onMounted(() => {  
    t('appName');  
  });  
}

vue3组合式使用

import { useNvueI18nWarmup } from '@/common/useNvueI18nWarmup';  
import { initVueI18n } from '@dcloudio/uni-i18n'  

  // const messages = {} 此处内容省略,和 vue 全局引入的写法一致  

const { t } = initVueI18n(messages)  

useNvueI18nWarmup(t);  
继续阅读 »

先上场景案例:

nvue 页面中的弹窗组件 up-popup, 初始状态不显示 , 使用nvue国际化方案, 页面进入后, 不打开弹窗前就修语言, 回到该页面,打开弹窗, 则显示的是 修改前的语言

uni-i18n源代码原因:t 是惰性的

let t = (key, values) => {  
        if (typeof getApp !== 'function') {  
            // app view  
            /* eslint-disable no-func-assign */  
            t = function (key, values) {  
                return i18n.t(key, values);  
            };  
        }  
        else {  
            let isWatchedAppLocale = false;  
            t = function (key, values) {  
                const appVm = getApp().$vm;  

                if (appVm) {  
                    // 触发响应式  
                    appVm.$locale;  
                    if (!isWatchedAppLocale) {  
                        isWatchedAppLocale = true;  
                        watchAppLocale(appVm, i18n);  
                    }  
                }  
                return i18n.t(key, values);  
            };  
        }  
        return t(key, values);  
    };

我的解决方案:预热 t, 打破惰性

方案:

onMounted(() => {  
    t('appName');  
  });  

封装 hook

import { onMounted } from 'vue';  

/**  
 * @name useNvueI18nWarmup  
 * @description 一个旨在处理 nvue 页面中 i18n 响应式问题的组合式函数, 预热国际化 t,打破 t 的惰性。  
 */  
export function useNvueI18nWarmup(t: (key: string) => string) {  
  onMounted(() => {  
    t('appName');  
  });  
}

vue3组合式使用

import { useNvueI18nWarmup } from '@/common/useNvueI18nWarmup';  
import { initVueI18n } from '@dcloudio/uni-i18n'  

  // const messages = {} 此处内容省略,和 vue 全局引入的写法一致  

const { t } = initVueI18n(messages)  

useNvueI18nWarmup(t);  
收起阅读 »

Uni app x 打包 apk 植物人也会

本地打包 uniapp离线打包 Android白屏 Android 安卓 打包 离线打包 App打包 App离线打包

🟢🟢 点个关注不迷路🟢🟢 (≧◡≦) ♡

🥺拜托了欧尼酱,阿里嘎多 Thank you 高马斯密达💖

👇👇⬇️⬇️

| 哔哩哔哩|CSDN|Github|Gitcode|
| 传送门 | 传送门 | 传送门 | 传送门 |

> 一般CSDN会第一时间更新图文教程,后续会上传源码到Github和Gitcode上,最后再录视频教程发到哔哩哔哩,如果没时间的话可能不会录视频。

Uni App X 安卓本地离线打包

介绍:Uni App X 安卓本地离线打包喂饭教程

效果图片

🟢温馨提示:如果图片无法加载请前往国内Gitcode镜像仓库

在这里插入图片描述

在这里插入图片描述

代码地址

🟢温馨提示:如果图片无法加载请前往国内Gitcode镜像仓库

Github:https://github.com/BrokenDreamTech/UniAppxPack

Gitcode:https://gitcode.com/BrokenDreamTech/UniAppxPack

特性

Github Action一键打包,无需配置Android Studio配置
压缩混淆配置,打包"Hello" apk大小:7.7MB
HBuilder X 4.85
HBuilder X 4.87

环境

HBuilder X 4.87

Android Studio 2025.2.2

教程

视频教程

传送门:https://www.bilibili.com/video/BV1yW6oBeEqy

图文教程

  1. 使用HBuilder X打开你的uni-app x项目点击"工具栏"-"发行"-"App-Android/iOS-本地打包"-"生成本地App打包资源"
  2. 因为"此项目"已有一个示例uni-app x,所以先把示例项目资源删除(不要乱删文件):
    • 删除"此项目"的"app/src/main/assets/apps"文件夹下的所有
    • 删除"此项目"的"app/src/main/java"文件夹下的:"index.kt"文件和"pages"文件夹
  3. 将生成的" UNI XXXXXX"文件夹复制到"此项目"的"app/src/main/assets/apps"文件夹下
  4. 将生成的"uniappx/app-android/src"文件夹下的所有东西复制粘贴到"此项目"的"app/src/main/java"文件夹下
  5. 使用Android Studio打开"此项目",直接打包即可。

    > 打包apk,在"此项目"的根目录打开命令行,执行:gradlew assembleRelease

一键打包 (不建议使用此方案,有构建时长限制,推荐自己按教程在本地打包)

  1. 下载或fork此项目,将仓库设置为私有(如果你不想公开你的项目),按照教程将uni-app x资源替换为自己的
  2. 将项目推送到Githab上,点击"Actions"-"Build Release",等待构建完成
  3. 构建完成后进入详情页,点击下载产物,下载后需解压

鸣谢

https://doc.dcloud.net.cn/uni-app-x/native/download/android.html

https://doc.dcloud.net.cn/uni-app-x/native/use/android.html

继续阅读 »

🟢🟢 点个关注不迷路🟢🟢 (≧◡≦) ♡

🥺拜托了欧尼酱,阿里嘎多 Thank you 高马斯密达💖

👇👇⬇️⬇️

| 哔哩哔哩|CSDN|Github|Gitcode|
| 传送门 | 传送门 | 传送门 | 传送门 |

> 一般CSDN会第一时间更新图文教程,后续会上传源码到Github和Gitcode上,最后再录视频教程发到哔哩哔哩,如果没时间的话可能不会录视频。

Uni App X 安卓本地离线打包

介绍:Uni App X 安卓本地离线打包喂饭教程

效果图片

🟢温馨提示:如果图片无法加载请前往国内Gitcode镜像仓库

在这里插入图片描述

在这里插入图片描述

代码地址

🟢温馨提示:如果图片无法加载请前往国内Gitcode镜像仓库

Github:https://github.com/BrokenDreamTech/UniAppxPack

Gitcode:https://gitcode.com/BrokenDreamTech/UniAppxPack

特性

Github Action一键打包,无需配置Android Studio配置
压缩混淆配置,打包"Hello" apk大小:7.7MB
HBuilder X 4.85
HBuilder X 4.87

环境

HBuilder X 4.87

Android Studio 2025.2.2

教程

视频教程

传送门:https://www.bilibili.com/video/BV1yW6oBeEqy

图文教程

  1. 使用HBuilder X打开你的uni-app x项目点击"工具栏"-"发行"-"App-Android/iOS-本地打包"-"生成本地App打包资源"
  2. 因为"此项目"已有一个示例uni-app x,所以先把示例项目资源删除(不要乱删文件):
    • 删除"此项目"的"app/src/main/assets/apps"文件夹下的所有
    • 删除"此项目"的"app/src/main/java"文件夹下的:"index.kt"文件和"pages"文件夹
  3. 将生成的" UNI XXXXXX"文件夹复制到"此项目"的"app/src/main/assets/apps"文件夹下
  4. 将生成的"uniappx/app-android/src"文件夹下的所有东西复制粘贴到"此项目"的"app/src/main/java"文件夹下
  5. 使用Android Studio打开"此项目",直接打包即可。

    > 打包apk,在"此项目"的根目录打开命令行,执行:gradlew assembleRelease

一键打包 (不建议使用此方案,有构建时长限制,推荐自己按教程在本地打包)

  1. 下载或fork此项目,将仓库设置为私有(如果你不想公开你的项目),按照教程将uni-app x资源替换为自己的
  2. 将项目推送到Githab上,点击"Actions"-"Build Release",等待构建完成
  3. 构建完成后进入详情页,点击下载产物,下载后需解压

鸣谢

https://doc.dcloud.net.cn/uni-app-x/native/download/android.html

https://doc.dcloud.net.cn/uni-app-x/native/use/android.html

收起阅读 »

关于uni-id-co云对象URL化,短信登录无法发送的问题。官方uni-id-pages模板自带的uni-id-co的bug修复

uni-id-pages功能全面,所以思考将自己的应用系统直接使用这个用户体系。
由于uni-id-co目前官方不支持在云对象中直接调用,但官方推荐了HTTP的调用方式,就是云对象URL化。
由于uni-id-co的功能接口太多权限太大,如果直接url化给客户端,肯定很多安全问题 。所以我们可以在自己云对象中,去调用url化的uni-id-co。

根据官方文档需要这3个关键参数: uniPlatform、appId、deviceId
其中deviceId 肯定是从客户端提起过来。这是客户端唯一标识。
uniPlatform直接设为‘web’,
最后一个是appId,就是uni官方的应用Id,但这个简单的appId参数,在短信发送这个功能上折磨了我好久。为避免其他同学也遇到这个需求和问题。所以写下本文。

因为我们在小程序端短信功能一切正常,所以显然容易想到直接让从云对象登录的统一模拟成小程序,也就是把appId设置成小程序的appId,这样跟小程序的用户体系就统一了,这也是需求,因为我们应用系统的用户同时也是小程序的用户。
这是ClientInfo的模拟:
this.customClientInfo = {
uniPlatform: 'web',
appId: 'UNIXXXXXXX',
deviceId: dvid,
locale: 'zh-Hans'
}
这样子的模拟,在云对象中许多其他功能都跑通了,包括账户密码登录等等,但是短信登录确一直报参数错误:appid
下面的传参方式是严格按官方文档要求来的,http请求的Post数据:
const requestData = {
clientInfo: this.customClientInfo,
params: {
mobile: params.mobile,
captcha: params.captcha,
scene: 'login-by-sms',
}
};

通过扒uni-id-co的源码,最终定位了问题出在【 uni-id-co/lib/utils/sms.js 】这个文件里的第61行左右。官方模版原本是这样写的。
await uniCloud.sendSms({
smsKey: smsConfig.smsKey,
smsSecret: smsConfig.smsSecret,
phone: mobile,
templateId,
data: {
name: smsConfig.name,
code,
action,
expMinute: '' + Math.round(codeExpiresIn / 60)
}
})

在小程序端可以发送成功,但是http端却报参数错误:appid
说明uniCloud.sendSms这个函数里面内置了从小程序端获取appid的方式。
然而来自于http端的appid即使你按官方文档要求传了,在这里依然丢失了。
所以得自己传进去,也就是在sendSms的参数里加一行appId: clientInfo.appId

到这里算是比较容易想到的,但当你这样 appId: clientInfo.appId传进去,发现问题依然在,肯定就跑去找其他原因了。
但, uniCloud.sendSms这个源码看不到,找遍了其他地方又找不到原因,花了大量时间后,不得不回到这里来重新思考,
最后是这把 appId: clientInfo.appId 改为 appid: clientInfo.appId ,发现终于成功了,是该喜还是什么别的表情?
一个大写I改成小写i,花了整整一天!

【问题最终解决方式】
const clientInfo = this.getUniversalClientInfo()
await uniCloud.sendSms({
appid: clientInfo.appId, //注意 sendSms的参数名 appid 必须小写 !就是这个小写折腾了我整整1天!!
smsKey: smsConfig.smsKey,
smsSecret: smsConfig.smsSecret,
phone: mobile,
templateId,
data: {
name: smsConfig.name,
code,
action,
expMinute: '' + Math.round(codeExpiresIn / 60)
}
})

继续阅读 »

uni-id-pages功能全面,所以思考将自己的应用系统直接使用这个用户体系。
由于uni-id-co目前官方不支持在云对象中直接调用,但官方推荐了HTTP的调用方式,就是云对象URL化。
由于uni-id-co的功能接口太多权限太大,如果直接url化给客户端,肯定很多安全问题 。所以我们可以在自己云对象中,去调用url化的uni-id-co。

根据官方文档需要这3个关键参数: uniPlatform、appId、deviceId
其中deviceId 肯定是从客户端提起过来。这是客户端唯一标识。
uniPlatform直接设为‘web’,
最后一个是appId,就是uni官方的应用Id,但这个简单的appId参数,在短信发送这个功能上折磨了我好久。为避免其他同学也遇到这个需求和问题。所以写下本文。

因为我们在小程序端短信功能一切正常,所以显然容易想到直接让从云对象登录的统一模拟成小程序,也就是把appId设置成小程序的appId,这样跟小程序的用户体系就统一了,这也是需求,因为我们应用系统的用户同时也是小程序的用户。
这是ClientInfo的模拟:
this.customClientInfo = {
uniPlatform: 'web',
appId: 'UNIXXXXXXX',
deviceId: dvid,
locale: 'zh-Hans'
}
这样子的模拟,在云对象中许多其他功能都跑通了,包括账户密码登录等等,但是短信登录确一直报参数错误:appid
下面的传参方式是严格按官方文档要求来的,http请求的Post数据:
const requestData = {
clientInfo: this.customClientInfo,
params: {
mobile: params.mobile,
captcha: params.captcha,
scene: 'login-by-sms',
}
};

通过扒uni-id-co的源码,最终定位了问题出在【 uni-id-co/lib/utils/sms.js 】这个文件里的第61行左右。官方模版原本是这样写的。
await uniCloud.sendSms({
smsKey: smsConfig.smsKey,
smsSecret: smsConfig.smsSecret,
phone: mobile,
templateId,
data: {
name: smsConfig.name,
code,
action,
expMinute: '' + Math.round(codeExpiresIn / 60)
}
})

在小程序端可以发送成功,但是http端却报参数错误:appid
说明uniCloud.sendSms这个函数里面内置了从小程序端获取appid的方式。
然而来自于http端的appid即使你按官方文档要求传了,在这里依然丢失了。
所以得自己传进去,也就是在sendSms的参数里加一行appId: clientInfo.appId

到这里算是比较容易想到的,但当你这样 appId: clientInfo.appId传进去,发现问题依然在,肯定就跑去找其他原因了。
但, uniCloud.sendSms这个源码看不到,找遍了其他地方又找不到原因,花了大量时间后,不得不回到这里来重新思考,
最后是这把 appId: clientInfo.appId 改为 appid: clientInfo.appId ,发现终于成功了,是该喜还是什么别的表情?
一个大写I改成小写i,花了整整一天!

【问题最终解决方式】
const clientInfo = this.getUniversalClientInfo()
await uniCloud.sendSms({
appid: clientInfo.appId, //注意 sendSms的参数名 appid 必须小写 !就是这个小写折腾了我整整1天!!
smsKey: smsConfig.smsKey,
smsSecret: smsConfig.smsSecret,
phone: mobile,
templateId,
data: {
name: smsConfig.name,
code,
action,
expMinute: '' + Math.round(codeExpiresIn / 60)
}
})

收起阅读 »

基于vue3.5+deepseek-v3.2+vite7+arco搭建网页版ai对话系统

ai OpenAI vite vue3

vite7-web-deepseek:基于vue3.5+vite7.2+arco-design+markdown+hljs+openai调用deepseek-v3.2聊天大模型。支持暗黑+浅色主题、深度思考、代码高亮、复制代码、katex公式、mermaid图表等功能。

使用技术

  • 前端框架:vite^7.2.4+vue^3.5.24+vue-router^4.6.4
  • ai大模型:DeepSeek-R1 + OpenAI
  • 组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态管理:pinia^3.0.4
  • 本地存储:pinia-plugin-persistedstate^4.7.1
  • 高亮插件:highlight.js^11.11.1
  • markdown插件:markdown-it
  • katex公式:@mdit/plugin-katex^0.24.1

如上图:vue3-deepseek-webai支持latex数学公式、mermaid图表渲染。

项目框架结构

> deepseek-vue3-webai网页版ai对话项目已经发布到我的原创作品集,欢迎下载使用哈!
> 2026原创Vue3+DeepSeek+ArcoDesign网页版AI流式对话模板

想要了解更多项目详细介绍,可以看看下面这篇文章。
Vite7+DeepSeek网页版Ai助手|vue3+arco网页web流式生成ai聊天问答系统

往期推荐

原创uniapp+vue3+deepseek+uv-ui跨端实战仿deepseek/豆包流式ai聊天对话助手。
vite7+deepseek流式ai模板|vue3.5+deepseek3.2+markdown打字输出ai助手
electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
Tauri2.9+Vue3桌面版OS系统|vite7+tauri2+arcoDesign电脑端os后台模板
Tauri2.8+Vue3聊天系统|vite7+tauri2+element-plus客户端仿微信聊天程序
Tauri2-Vite7Admin客户端管理后台|tauri2.9+vue3+element-plus后台系统
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
uniapp-vue3-os手机oa系统|uni-app+vue3跨三端os后台管理模板
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈
Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板

继续阅读 »

vite7-web-deepseek:基于vue3.5+vite7.2+arco-design+markdown+hljs+openai调用deepseek-v3.2聊天大模型。支持暗黑+浅色主题、深度思考、代码高亮、复制代码、katex公式、mermaid图表等功能。

使用技术

  • 前端框架:vite^7.2.4+vue^3.5.24+vue-router^4.6.4
  • ai大模型:DeepSeek-R1 + OpenAI
  • 组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态管理:pinia^3.0.4
  • 本地存储:pinia-plugin-persistedstate^4.7.1
  • 高亮插件:highlight.js^11.11.1
  • markdown插件:markdown-it
  • katex公式:@mdit/plugin-katex^0.24.1

如上图:vue3-deepseek-webai支持latex数学公式、mermaid图表渲染。

项目框架结构

> deepseek-vue3-webai网页版ai对话项目已经发布到我的原创作品集,欢迎下载使用哈!
> 2026原创Vue3+DeepSeek+ArcoDesign网页版AI流式对话模板

想要了解更多项目详细介绍,可以看看下面这篇文章。
Vite7+DeepSeek网页版Ai助手|vue3+arco网页web流式生成ai聊天问答系统

往期推荐

原创uniapp+vue3+deepseek+uv-ui跨端实战仿deepseek/豆包流式ai聊天对话助手。
vite7+deepseek流式ai模板|vue3.5+deepseek3.2+markdown打字输出ai助手
electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
Tauri2.9+Vue3桌面版OS系统|vite7+tauri2+arcoDesign电脑端os后台模板
Tauri2.8+Vue3聊天系统|vite7+tauri2+element-plus客户端仿微信聊天程序
Tauri2-Vite7Admin客户端管理后台|tauri2.9+vue3+element-plus后台系统
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
uniapp-vue3-os手机oa系统|uni-app+vue3跨三端os后台管理模板
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板
最新研发flutter3.27+bitsdojo_window+getx客户端仿微信聊天Exe应用
最新版Flutter3.32+Dart3.8跨平台仿微信app聊天界面|朋友圈
Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板

收起阅读 »

sh: uni: command not found

uni_app

uni-app 项目
遇到了 "sh: uni: command not found" 的错误。这通常与 uni-app 开发环境配置有关。
使用了 @dcloudio/uni-app 和相关依赖。uni 命令是 uni-app CLI 工具的一部分,但看起来没有正确安装或配置。
项目使用 pnpm 作为包管理器(有 pnpm-lock.yaml 文件),并且没有看到 node_modules 目录。这很可能是导致 uni 命令找不到的原因。

  • 检查依赖是否已安装:
    ls -la node_modules 2>/dev/null || echo "node_modules not found"
  • 全局安装 pnpm,然后安装项目依赖。
    npm install -g pnpm
  • 因为在 uni-app 项目中,uni 命令通常是通过 npm scripts 运行的,而不是全局命令。让我检查 node_modules 中的 .bin 目录,并尝试通过 npx 或 pnpm 运行:
    ls node_modules/.bin/ | grep uni
  • 检查 .bin 目录中的所有可执行文件:
    ls node_modules/.bin/
  • 看到 uni 命令确实存在于 node_modules/.bin/ 目录中。在 uni-app 项目中,正确的使用方式是通过 npm scripts 或者 npx/pnpm 来运行。让我测试一下:
    pnpm run dev

    成功解决了 "sh: uni: command not found" 错误!问题的原因是项目依赖没有正确安装。

解决步骤:

安装了 pnpm 包管理器(全局安装)
使用 pnpm 安装了项目的所有依赖(共 1137 个包)
确认 uni-app CLI 工具已正确安装
当前状态:

✅ pnpm 10.27.0 已安装
✅ 项目依赖已全部安装完成
✅ uni-app 开发环境已配置完成
✅ 项目可以正常启动(pnpm run dev 成功运行)
使用说明:
在 uni-app 项目中,uni 命令不是全局命令,而是通过 npm scripts 调用的。你可以使用以下命令:

pnpm run dev - 启动开发模式(微信小程序)
pnpm run start - 同 dev 命令
pnpm run build - 构建生产版本
npx uni -p mp-weixin - 直接使用 uni 命令
项目现在正在运行中,编译已完成并进入监听模式。你可以打开微信开发者工具,导入 dist/dev/mp-weixin 目录来查看运行效果。

继续阅读 »

uni-app 项目
遇到了 "sh: uni: command not found" 的错误。这通常与 uni-app 开发环境配置有关。
使用了 @dcloudio/uni-app 和相关依赖。uni 命令是 uni-app CLI 工具的一部分,但看起来没有正确安装或配置。
项目使用 pnpm 作为包管理器(有 pnpm-lock.yaml 文件),并且没有看到 node_modules 目录。这很可能是导致 uni 命令找不到的原因。

  • 检查依赖是否已安装:
    ls -la node_modules 2>/dev/null || echo "node_modules not found"
  • 全局安装 pnpm,然后安装项目依赖。
    npm install -g pnpm
  • 因为在 uni-app 项目中,uni 命令通常是通过 npm scripts 运行的,而不是全局命令。让我检查 node_modules 中的 .bin 目录,并尝试通过 npx 或 pnpm 运行:
    ls node_modules/.bin/ | grep uni
  • 检查 .bin 目录中的所有可执行文件:
    ls node_modules/.bin/
  • 看到 uni 命令确实存在于 node_modules/.bin/ 目录中。在 uni-app 项目中,正确的使用方式是通过 npm scripts 或者 npx/pnpm 来运行。让我测试一下:
    pnpm run dev

    成功解决了 "sh: uni: command not found" 错误!问题的原因是项目依赖没有正确安装。

解决步骤:

安装了 pnpm 包管理器(全局安装)
使用 pnpm 安装了项目的所有依赖(共 1137 个包)
确认 uni-app CLI 工具已正确安装
当前状态:

✅ pnpm 10.27.0 已安装
✅ 项目依赖已全部安装完成
✅ uni-app 开发环境已配置完成
✅ 项目可以正常启动(pnpm run dev 成功运行)
使用说明:
在 uni-app 项目中,uni 命令不是全局命令,而是通过 npm scripts 调用的。你可以使用以下命令:

pnpm run dev - 启动开发模式(微信小程序)
pnpm run start - 同 dev 命令
pnpm run build - 构建生产版本
npx uni -p mp-weixin - 直接使用 uni 命令
项目现在正在运行中,编译已完成并进入监听模式。你可以打开微信开发者工具,导入 dist/dev/mp-weixin 目录来查看运行效果。

收起阅读 »

鸿蒙应用商城搜索安装亿企标讯,跪求!!!可私信我付费

鸿蒙next

我们参加了华为鸿蒙的激励计划,可是下载量一直上不去,希望看到帖子的大大们帮帮忙

我们参加了华为鸿蒙的激励计划,可是下载量一直上不去,希望看到帖子的大大们帮帮忙

hbuilderx打包报证书过期,解决方案:使用香蕉云编重新生成

iOS证书

打包的时候,报遇到The certificate is expired这个错误,字面意思其实很明了,就是证书过期了。

管理证书的组好的方法,最好是亲自去苹果开发者开发者中心生成,这样可以充分了解ios证书过期的生命周期,也可以提前创建和管理证书,这里我推荐使用香蕉云编+苹果开发者中心来生成。

主要是在苹果开发者中心,删除旧的证书和profile文件,然后重新生成。

而因为在苹果开发者中心,生成证书的时候,由于需要提供csr这种文件,生成完证书后还需要导出成p12格式的私钥证书,因此需要香蕉云编作为辅助功能来做配合。工具:

https://www.yunedit.com/createcert

直接使用这个工具来生成即可,傻瓜式的可视化工具,假如流程有不懂,可以直接看工具里生成证书界面的教程。

继续阅读 »

打包的时候,报遇到The certificate is expired这个错误,字面意思其实很明了,就是证书过期了。

管理证书的组好的方法,最好是亲自去苹果开发者开发者中心生成,这样可以充分了解ios证书过期的生命周期,也可以提前创建和管理证书,这里我推荐使用香蕉云编+苹果开发者中心来生成。

主要是在苹果开发者中心,删除旧的证书和profile文件,然后重新生成。

而因为在苹果开发者中心,生成证书的时候,由于需要提供csr这种文件,生成完证书后还需要导出成p12格式的私钥证书,因此需要香蕉云编作为辅助功能来做配合。工具:

https://www.yunedit.com/createcert

直接使用这个工具来生成即可,傻瓜式的可视化工具,假如流程有不懂,可以直接看工具里生成证书界面的教程。

收起阅读 »

分享2100+赛博朋克图标,持续更新中

图标

🎨 纯正赛博朋克风:霓虹光感、高对比度、科技质感。
📦 海量资源:内置 2100+ 个精心设计的图标,覆盖几乎所有常用场景。
⚡️ 高性能渲染:采用 WebP 格式雪碧图(Sprite Sheet)技术,相比单图加载大幅减少 HTTP 请求,兼顾显示效果与加载性能。
🔧 便捷组件化:基于 uni-app uni_modules 规范,只需一行代码即可使用。
📏 灵活缩放:支持自定义尺寸(Size),组件会自动进行无损等比缩放。

体验地址

继续阅读 »

🎨 纯正赛博朋克风:霓虹光感、高对比度、科技质感。
📦 海量资源:内置 2100+ 个精心设计的图标,覆盖几乎所有常用场景。
⚡️ 高性能渲染:采用 WebP 格式雪碧图(Sprite Sheet)技术,相比单图加载大幅减少 HTTP 请求,兼顾显示效果与加载性能。
🔧 便捷组件化:基于 uni-app uni_modules 规范,只需一行代码即可使用。
📏 灵活缩放:支持自定义尺寸(Size),组件会自动进行无损等比缩放。

体验地址

收起阅读 »

人脸识别 活体检测 UTS API插件,支持iOS Android,支持uniapp和uniapp x

FaceAISDK-UTS API 插件

1:1人脸识别,活体检测UTS API插件,支持iOS,Android,支持uniappX和uniapp。
人脸识别活体检测都是设备端侧AI能力,无需后台API服务可完全离线运行,高性能无依赖

感谢大家收藏与点赞,如有问题可描述你的使用场景说明发送邮件到FaceAISDK.Service@gmial.com
或提issues 到本插件GitHub托管工程:https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS

快速体验完整人脸识别功能可以下载Demo App:https://www.pgyer.com/app/qrcode/faceVerify

1:N 人脸搜索识别插件独立出来了:https://ext.dcloud.net.cn/plugin?id=26467

使用方法

如果你是第一次运行UTS插件工程/引入UTS API插件,你应先安装官方说明配置好基础环境 基础环境

    1. 下载Demo工程先跑通。熟悉后参考文档集成到主项目
    1. 按照文档 -》把插件引入项目(即 import {faceVerify,livenessVerify,getFaceFeature等方法} from "@/uni_modules/FaceAISDK-Core";)
    1. 运行-》运行到手机或模拟器 -》制作自定义调试基座 -》打包 等基座制作完成
      制作自定义调试基座
    1. 运行 -》 运行到手机或模拟器-》运行到iOS/Android基座-》选择使用自定义基座运行-》选择手机-》运行
      运行到手机
      请手动勾选对正确的运行方式,很多朋友辛苦打好了自定义基座包,结果运行的时候没选对导致运行不了

    若之前手机安装过基座需要先卸载之前的基座,iOS 可能会提示你安装好后杀死应进程后重新启动(可以点击几个其他应用加快彻底杀死重启)
    注:只支持真机调试,需要用到硬件摄像头

常见错误与解决方法

    1. iOS 自定义基座首次运行找不到iOS原生SDK FaceAISDK_Core
      Analyzing dependencies  
      CocoaPods could not find compatible versions for pod "FaceAISDK_Core":  
      in Podfile:  
      FaceAISDK_Core (= 2026.01.04)  
      None of your spec sources contain a spec satisfying the dependency: `FaceAISDK_Core (= 2025.12.31)`.  

      基本重新运行就可以了,在线打包机器有时候会无法科学上网有问题无法访问GitHub

    1. iOS 基座安装到手机后很久都是白屏/黑屏幕
      控制台输出  
      项目 [FaceAI_API_Plugin] 已启动。请点击手机/模拟器的运行基座App(uni-app x)查看效果。  
      如应用未更新,请在手机上杀掉基座进程重启  

      根据提示杀掉基座进程重启,然后点击启动2个其他App后再重新启动基本就没问题了,本情况只会在第一次安装新基座出现

    1. 炫彩活体提示光线太亮导致失败
      这个基本上只能规避强光环境了,或引导用户用手遮住强烈光线,让手机彩色光能照到脸部
    1. 改动原生swift/kotlin 代码导致基座不能正常运行
      只能重新制作自定义调试基座,UTS API插件使用方如果不需要修改插件底层实现尽量不用改原生代码

人脸识别,活体检测状态码

人脸识别,活体检测状态码含义

    public static let DEFAULT = 0                  // 0   初始化状态,流程没有开始  
    public static let VERIFY_SUCCESS = 1           // 1   人脸识别对比成功大于设置的threshold  
    public static let VERIFY_FAILED = 2            // 2   人脸识别对比识别小于设置的threshold  
    public static let MOTION_LIVENESS_SUCCESS = 3  // 3   动作活体检测成功(基本不用,还有后续动作)  
    public static let MOTION_LIVENESS_TIMEOUT = 4  // 4   动作活体超时  
    public static let NO_FACE_MULTI = 5            // 5   多次没有检测到人脸  
    public static let NO_FACE_FEATURE = 6          // 6   没有对应的人脸特征值  
    public static let COLOR_LIVENESS_SUCCESS = 7   // 7   炫彩活体成功  
    public static let COLOR_LIVENESS_FAILED = 8    // 8   炫彩活体失败  
    public static let COLOR_LIVENESS_LIGHT_TOO_HIGH = 9 // 9   炫彩活体失败,光线亮度过高  
    public static let ALL_LIVENESS_SUCCESS = 10    // 10  所有的活体检测完成(包括动作和炫彩)

Copyright © 2026 FaceAISDK. All rights reserved

继续阅读 »

FaceAISDK-UTS API 插件

1:1人脸识别,活体检测UTS API插件,支持iOS,Android,支持uniappX和uniapp。
人脸识别活体检测都是设备端侧AI能力,无需后台API服务可完全离线运行,高性能无依赖

感谢大家收藏与点赞,如有问题可描述你的使用场景说明发送邮件到FaceAISDK.Service@gmial.com
或提issues 到本插件GitHub托管工程:https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS

快速体验完整人脸识别功能可以下载Demo App:https://www.pgyer.com/app/qrcode/faceVerify

1:N 人脸搜索识别插件独立出来了:https://ext.dcloud.net.cn/plugin?id=26467

使用方法

如果你是第一次运行UTS插件工程/引入UTS API插件,你应先安装官方说明配置好基础环境 基础环境

    1. 下载Demo工程先跑通。熟悉后参考文档集成到主项目
    1. 按照文档 -》把插件引入项目(即 import {faceVerify,livenessVerify,getFaceFeature等方法} from "@/uni_modules/FaceAISDK-Core";)
    1. 运行-》运行到手机或模拟器 -》制作自定义调试基座 -》打包 等基座制作完成
      制作自定义调试基座
    1. 运行 -》 运行到手机或模拟器-》运行到iOS/Android基座-》选择使用自定义基座运行-》选择手机-》运行
      运行到手机
      请手动勾选对正确的运行方式,很多朋友辛苦打好了自定义基座包,结果运行的时候没选对导致运行不了

    若之前手机安装过基座需要先卸载之前的基座,iOS 可能会提示你安装好后杀死应进程后重新启动(可以点击几个其他应用加快彻底杀死重启)
    注:只支持真机调试,需要用到硬件摄像头

常见错误与解决方法

    1. iOS 自定义基座首次运行找不到iOS原生SDK FaceAISDK_Core
      Analyzing dependencies  
      CocoaPods could not find compatible versions for pod "FaceAISDK_Core":  
      in Podfile:  
      FaceAISDK_Core (= 2026.01.04)  
      None of your spec sources contain a spec satisfying the dependency: `FaceAISDK_Core (= 2025.12.31)`.  

      基本重新运行就可以了,在线打包机器有时候会无法科学上网有问题无法访问GitHub

    1. iOS 基座安装到手机后很久都是白屏/黑屏幕
      控制台输出  
      项目 [FaceAI_API_Plugin] 已启动。请点击手机/模拟器的运行基座App(uni-app x)查看效果。  
      如应用未更新,请在手机上杀掉基座进程重启  

      根据提示杀掉基座进程重启,然后点击启动2个其他App后再重新启动基本就没问题了,本情况只会在第一次安装新基座出现

    1. 炫彩活体提示光线太亮导致失败
      这个基本上只能规避强光环境了,或引导用户用手遮住强烈光线,让手机彩色光能照到脸部
    1. 改动原生swift/kotlin 代码导致基座不能正常运行
      只能重新制作自定义调试基座,UTS API插件使用方如果不需要修改插件底层实现尽量不用改原生代码

人脸识别,活体检测状态码

人脸识别,活体检测状态码含义

    public static let DEFAULT = 0                  // 0   初始化状态,流程没有开始  
    public static let VERIFY_SUCCESS = 1           // 1   人脸识别对比成功大于设置的threshold  
    public static let VERIFY_FAILED = 2            // 2   人脸识别对比识别小于设置的threshold  
    public static let MOTION_LIVENESS_SUCCESS = 3  // 3   动作活体检测成功(基本不用,还有后续动作)  
    public static let MOTION_LIVENESS_TIMEOUT = 4  // 4   动作活体超时  
    public static let NO_FACE_MULTI = 5            // 5   多次没有检测到人脸  
    public static let NO_FACE_FEATURE = 6          // 6   没有对应的人脸特征值  
    public static let COLOR_LIVENESS_SUCCESS = 7   // 7   炫彩活体成功  
    public static let COLOR_LIVENESS_FAILED = 8    // 8   炫彩活体失败  
    public static let COLOR_LIVENESS_LIGHT_TOO_HIGH = 9 // 9   炫彩活体失败,光线亮度过高  
    public static let ALL_LIVENESS_SUCCESS = 10    // 10  所有的活体检测完成(包括动作和炫彩)

Copyright © 2026 FaceAISDK. All rights reserved

收起阅读 »

unicloud配置自定义域名的详细步骤

云服务

unicloud配置自定义域名的详细步骤

经常看到大家在问答中心去问,绑定时候的一些问题,有空就整理了下详细步骤,可以参考下

我这块以阿里云为例

1.购买注册认证域名

  1. 创建并认证信息模板:创建并提交包含域名持有者身份资料的信息模板以供审核。
  2. 将模板关联至域名:将审核通过的信息模板关联到一个或多个域名。
  3. 查询域名实名认证状态:如果状态显示为正常,表示域名已成功完成实名认证,可进行备案解析配置

信息模板状态显示为“模板实名成功”后,须将其关联至域名,才能完成整个认证流程。

  • 场景1:为新注册的域名认证

    在域名购买的订单确认页面,选择已实名成功的模板即可。支付后,系统会自动为您提交认证。

  • 场景2:为已有的域名认证

    1. 域名列表页找到未实名认证的域名。

  1. 单击目标域名,在\域名持有者实名认证\ > **快速认证****页,选择已通过认证的模板进行关联。

2.备案

  1. 点击阿里云右上角的备案

  1. 点击新增/接入其他服务后,点击自助备案即可

3.不管是企业还是个人,就按照模板填就可以了,完成就下一步,一直下一步就ok了,就不一 一列了,然后等管局审核就ok了,完成后就是图二了(如果需要备案码的话,如果是支付宝云,满200的话,会赠送两个,再或者也可以从阿里云直接购买备案码、或许咸鱼)

3.绑定域名

1.找到unicloud的控制台,我这块是用函数/对象 右上角的域名绑定演示的,点击域名绑定

2.在公网权威解析中,点击解析设置,然后添加记录

4.证书解析

1.阿里云直接搜索数字证书管理服务(原SSL证书)找到ssl证书

2.点击立即购买后,如果想要免费的话,选择个人测试证书,当然如果嫌麻烦,可以购买个人测试证书pro

  • 个人测试证书(免费版):每年20个证书,每个证书3个月有效期。
  • 个人测试证书(pro):需要付费68块大洋购买,有效期为一年。

3.创建证书

4.成功后返回到列表,稍等一会,状态会变成已签发

5.点击更多,然后找到nginx项,点击下载

6.在unicloud的证书和秘钥处,填入下载下来的内容即可

继续阅读 »

unicloud配置自定义域名的详细步骤

经常看到大家在问答中心去问,绑定时候的一些问题,有空就整理了下详细步骤,可以参考下

我这块以阿里云为例

1.购买注册认证域名

  1. 创建并认证信息模板:创建并提交包含域名持有者身份资料的信息模板以供审核。
  2. 将模板关联至域名:将审核通过的信息模板关联到一个或多个域名。
  3. 查询域名实名认证状态:如果状态显示为正常,表示域名已成功完成实名认证,可进行备案解析配置

信息模板状态显示为“模板实名成功”后,须将其关联至域名,才能完成整个认证流程。

  • 场景1:为新注册的域名认证

    在域名购买的订单确认页面,选择已实名成功的模板即可。支付后,系统会自动为您提交认证。

  • 场景2:为已有的域名认证

    1. 域名列表页找到未实名认证的域名。

  1. 单击目标域名,在\域名持有者实名认证\ > **快速认证****页,选择已通过认证的模板进行关联。

2.备案

  1. 点击阿里云右上角的备案

  1. 点击新增/接入其他服务后,点击自助备案即可

3.不管是企业还是个人,就按照模板填就可以了,完成就下一步,一直下一步就ok了,就不一 一列了,然后等管局审核就ok了,完成后就是图二了(如果需要备案码的话,如果是支付宝云,满200的话,会赠送两个,再或者也可以从阿里云直接购买备案码、或许咸鱼)

3.绑定域名

1.找到unicloud的控制台,我这块是用函数/对象 右上角的域名绑定演示的,点击域名绑定

2.在公网权威解析中,点击解析设置,然后添加记录

4.证书解析

1.阿里云直接搜索数字证书管理服务(原SSL证书)找到ssl证书

2.点击立即购买后,如果想要免费的话,选择个人测试证书,当然如果嫌麻烦,可以购买个人测试证书pro

  • 个人测试证书(免费版):每年20个证书,每个证书3个月有效期。
  • 个人测试证书(pro):需要付费68块大洋购买,有效期为一年。

3.创建证书

4.成功后返回到列表,稍等一会,状态会变成已签发

5.点击更多,然后找到nginx项,点击下载

6.在unicloud的证书和秘钥处,填入下载下来的内容即可

收起阅读 »

寻求uni熟手合作

招聘与外包

寻求uni-app熟手合作项目,你负责技术,我负责变现,利润分成。VX:xiaoniuniu023628

寻求uni-app熟手合作项目,你负责技术,我负责变现,利润分成。VX:xiaoniuniu023628