HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

getLocation定位失败 requiredPrivateInfos

小程序发生了定位失败的情况,

返回异常信息放回如下:{"errMsg":"getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json"}

查阅了官方的app.json文档
app.json 的配置指引

官方文档

在原有的配置信息下在配置 requiredPrivateInfos

"permission" : {
"scope.userLocation" : {
"desc" : "您的位置将用于获取当前城市的商品"
}
},
"requiredPrivateInfos": [
"chooseAddress",
"chooseLocation",
"choosePoi",
"getLocation",
"onLocationChange",
"startLocationUpdateBackground",
"startLocationUpdate"
]

继续阅读 »

小程序发生了定位失败的情况,

返回异常信息放回如下:{"errMsg":"getLocation:fail the api need to be declared in the requiredPrivateInfos field in app.json/ext.json"}

查阅了官方的app.json文档
app.json 的配置指引

官方文档

在原有的配置信息下在配置 requiredPrivateInfos

"permission" : {
"scope.userLocation" : {
"desc" : "您的位置将用于获取当前城市的商品"
}
},
"requiredPrivateInfos": [
"chooseAddress",
"chooseLocation",
"choosePoi",
"getLocation",
"onLocationChange",
"startLocationUpdateBackground",
"startLocationUpdate"
]

收起阅读 »

[[AVAudioSession sharedInstance]setCategory: js实现方式?

原生代码:
[[AVAudioSession sharedInstance]setCategory: AVAudioSessionCategoryPlayback
withOptions: AVAudioSessionCategoryOptionMixWithOthers
error: nil]

用js如何实现呢? 目前js只有AVAudioSession.sharedInstance().setCategoryerror 这个方法,没有withOptions 的参数。

继续阅读 »

原生代码:
[[AVAudioSession sharedInstance]setCategory: AVAudioSessionCategoryPlayback
withOptions: AVAudioSessionCategoryOptionMixWithOthers
error: nil]

用js如何实现呢? 目前js只有AVAudioSession.sharedInstance().setCategoryerror 这个方法,没有withOptions 的参数。

收起阅读 »

【uniapp开发(结合vue2)】想使用uniapp扩展组件,却遇到Cannot find module '@dcloudio/uni-ui/lib/uni-***/uni-***.vue'

想使用uniapp扩展组件(npm安装+easycom配置),却遇到Cannot find module '@dcloudio/uni-ui/lib/uni-/uni-.vue',不能找到某模块

为了实现一些功能,借用了一些开源UI框架,PC端app模拟器测试时,好好地;而真机测试时,令人唏嘘不已。哎~难受~还是瞅瞅扩展组件吧~

下面跟大家分享一下,npm安装+easycom配置,安装uniapp扩展组件是的一个注意点。(本次分享,也是自己的笔记记录,分享有点长,可以认真看完也可以选择阅读,各位道友请自便)
【分享重点:主要是easycom,本着优化性能的原则的设计,没想到有点小瑕疵,解决这个小瑕疵】
npm安装uniapp扩展组件,根据官方安装介绍步骤正常进行,如下(更小的细节,像使用限制版本等,见官文):

1、根目录新建并配置 vue.config.js文件

// vue.config.js  
module.exports = {  
        transpileDependencies:['@dcloudio/uni-ui']  
}

2、准备 sass

// 安装 sass  
npm i sass -D   或   yarn add sass -D   
// 安装 sass-loader  
npm i sass-loader@10.1.1 -D   或   yarn add sass-loader@10.1.1 -D  
(安装时可以不指定版本号)

3、安装 uni-ui

npm i @dcloudio/uni-ui   或   yarn add @dcloudio/uni-ui

4、配置easycom(最关键的一步,也是找不到模块组件的问题所在)

//官方建议这么配置  
// pages.json  
{  
    "easycom": {  
        "autoscan": true,  
        "custom": {  
            // uni-ui 规则如下配置  
            "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"  
        }  
    },  

    // 其他内容  
    pages:[  
        // ...  
    ]  
}

按理说,配置完之后就可以正常使用扩展组件了,但控制台出现了最不想见到的红色:Cannot find module........
其实easycom配置的规范样式并没有错,更深入的仔细看会发现安装的node模块下@dcloudio/uni-ui中并没有lib目录,所以找不到模块是正常的。

顺藤摸瓜,根据自己的模块目录自己将目录配置完整,就可以正常用扩展组件了。
我顺着模块目录,更改后的配置如下:

"easycom": {  
            "autoscan": true,  
            "custom": {  
                "^uni-(.*)": "@dcloudio/uni-ui/uni_modules/uni-$1/components/uni-$1/uni-$1.vue"  
            }  
        },

还有一个注意点,还要提醒初次配置扩展组件的道友注意,每次配置完easycom,需要重启项目或HBuilder,配置才会生效。
分享结束。

继续阅读 »

想使用uniapp扩展组件(npm安装+easycom配置),却遇到Cannot find module '@dcloudio/uni-ui/lib/uni-/uni-.vue',不能找到某模块

为了实现一些功能,借用了一些开源UI框架,PC端app模拟器测试时,好好地;而真机测试时,令人唏嘘不已。哎~难受~还是瞅瞅扩展组件吧~

下面跟大家分享一下,npm安装+easycom配置,安装uniapp扩展组件是的一个注意点。(本次分享,也是自己的笔记记录,分享有点长,可以认真看完也可以选择阅读,各位道友请自便)
【分享重点:主要是easycom,本着优化性能的原则的设计,没想到有点小瑕疵,解决这个小瑕疵】
npm安装uniapp扩展组件,根据官方安装介绍步骤正常进行,如下(更小的细节,像使用限制版本等,见官文):

1、根目录新建并配置 vue.config.js文件

// vue.config.js  
module.exports = {  
        transpileDependencies:['@dcloudio/uni-ui']  
}

2、准备 sass

// 安装 sass  
npm i sass -D   或   yarn add sass -D   
// 安装 sass-loader  
npm i sass-loader@10.1.1 -D   或   yarn add sass-loader@10.1.1 -D  
(安装时可以不指定版本号)

3、安装 uni-ui

npm i @dcloudio/uni-ui   或   yarn add @dcloudio/uni-ui

4、配置easycom(最关键的一步,也是找不到模块组件的问题所在)

//官方建议这么配置  
// pages.json  
{  
    "easycom": {  
        "autoscan": true,  
        "custom": {  
            // uni-ui 规则如下配置  
            "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"  
        }  
    },  

    // 其他内容  
    pages:[  
        // ...  
    ]  
}

按理说,配置完之后就可以正常使用扩展组件了,但控制台出现了最不想见到的红色:Cannot find module........
其实easycom配置的规范样式并没有错,更深入的仔细看会发现安装的node模块下@dcloudio/uni-ui中并没有lib目录,所以找不到模块是正常的。

顺藤摸瓜,根据自己的模块目录自己将目录配置完整,就可以正常用扩展组件了。
我顺着模块目录,更改后的配置如下:

"easycom": {  
            "autoscan": true,  
            "custom": {  
                "^uni-(.*)": "@dcloudio/uni-ui/uni_modules/uni-$1/components/uni-$1/uni-$1.vue"  
            }  
        },

还有一个注意点,还要提醒初次配置扩展组件的道友注意,每次配置完easycom,需要重启项目或HBuilder,配置才会生效。
分享结束。

收起阅读 »

希望HBuilderX控制台增加两个功能,搜索和清空按钮

HBuilderX

希望HBuilderX控制台增加两个功能,搜索和清空按钮。谢谢。

希望HBuilderX控制台增加两个功能,搜索和清空按钮。谢谢。

温州微凌客科技有限公司 全栈经验,全职接单

外包

16年成立,近10年开发经验。写过各类uniapp+tp 项目 求接单或外包

16年成立,近10年开发经验。写过各类uniapp+tp 项目 求接单或外包

关于jql如何开启事务

uniCloud

接触云开发不久,想蹭蹭免费的阿里云服务器,某些新增编辑业务想使用开启事务,但最后实现不出来发现,好像事务只能用于云函数,但是又不打算使用云函数(阿里云函数有限制),也懒得搞单路由云函数,所以想用jql来实现


无意中发现action好像可以实现,结果试了一下发现只能回滚当前加了action这条的操作。
需求:用户有多个收货地址,但是默认地址只能有一个;

// 用户设置默认收货地址  
db.action('test').collection('user-address').doc(e._id).update({is_default: true })

action-test如下


结果发现,直接进行rollback操作了,上图设置旧默认地址的操作一直没法正常回滚。
所以实在不明白action中的事务操作有什么作用,难道jql是真的开不了事务吗

----------- 补充 -------------

经过测试发现了问题所在,开启了事务之后,得使用transaction来替代db才能将该次请求加入到事务中

const db = uniCloud.database()  
state.transaction = await db.startTransaction()  
// 该次操作加入事务中,由事务管理  
state.transaction.collection('user-address').doc(defaultAddr.data[0]._id).update({is_default: false})  
// 该次操作不加入事务  
db.collection('user-address').doc(defaultAddr.data[0]._id).update({is_default: false})

最终测试,action和云函数中是可以加入事务的,但是jql中是无法开启的,原因可能如下

// 云函数中使用db有两种创建方式  
const db = uniCloud.database()    // 不支持jql语法  
const dbJql = uniCloud.databaseForJQL()    // 支持jql语法  
// clientDB中使用db  
const db = uniCloud.database()    // 支持jql语法

可能因为在clientDB中创建的 db 默认就是 JQL 吧,调用transaction.collection会提示没有collection方法,就像在云函数中使用dbJql去创建transaction一样。所以想分开封装请求而不经过云函数,可能目前还不行。

继续阅读 »

接触云开发不久,想蹭蹭免费的阿里云服务器,某些新增编辑业务想使用开启事务,但最后实现不出来发现,好像事务只能用于云函数,但是又不打算使用云函数(阿里云函数有限制),也懒得搞单路由云函数,所以想用jql来实现


无意中发现action好像可以实现,结果试了一下发现只能回滚当前加了action这条的操作。
需求:用户有多个收货地址,但是默认地址只能有一个;

// 用户设置默认收货地址  
db.action('test').collection('user-address').doc(e._id).update({is_default: true })

action-test如下


结果发现,直接进行rollback操作了,上图设置旧默认地址的操作一直没法正常回滚。
所以实在不明白action中的事务操作有什么作用,难道jql是真的开不了事务吗

----------- 补充 -------------

经过测试发现了问题所在,开启了事务之后,得使用transaction来替代db才能将该次请求加入到事务中

const db = uniCloud.database()  
state.transaction = await db.startTransaction()  
// 该次操作加入事务中,由事务管理  
state.transaction.collection('user-address').doc(defaultAddr.data[0]._id).update({is_default: false})  
// 该次操作不加入事务  
db.collection('user-address').doc(defaultAddr.data[0]._id).update({is_default: false})

最终测试,action和云函数中是可以加入事务的,但是jql中是无法开启的,原因可能如下

// 云函数中使用db有两种创建方式  
const db = uniCloud.database()    // 不支持jql语法  
const dbJql = uniCloud.databaseForJQL()    // 支持jql语法  
// clientDB中使用db  
const db = uniCloud.database()    // 支持jql语法

可能因为在clientDB中创建的 db 默认就是 JQL 吧,调用transaction.collection会提示没有collection方法,就像在云函数中使用dbJql去创建transaction一样。所以想分开封装请求而不经过云函数,可能目前还不行。

收起阅读 »

uni-app安卓端生成桌面快捷应用

快捷方式

在A页面 点击按钮创建应用

createShortcut(){  
                const routes = getCurrentPages();  
                let curRoute = routes[routes.length - 1].route  
                // console.log(curRoute);  
                plus.navigator.createShortcut({  
                        name: "我是第一个",  
                        icon: '/static/c1.png',  
                        extra:{  
                            path:curRoute,// 应用地址  
                            title:'第一个快捷方式'  
                        },  
                        // toast: "已创建快捷方式到桌面"  
                    }, function(e){  
                        console.log("A=",e); // {"sure":false}  
                    }, function(e){  
                    console.log("B=",e);  
                    console.log("C=",e.message);  
                });

在app.vue页面进行读取快捷应用地址

onShow: function() {  
        console.log('App Show');  
        let main = plus.android.runtimeMainActivity();  
        const Intent = plus.android.importClass('android.content.Intent');  
        const intent = main.getIntent();  
        let path = intent.getStringExtra('path'); // list 里面的 path  
        if (path === null) return; //path为null或者未登录,直接return  
        //使用 $nextTick 延时跳转,避免在 tabBar 页面出现 BUG  
        this.$nextTick(function() {  
            //快捷方式执行逻辑(跳转页面的话,只需要在此处写上跳转逻辑)  
            uni.navigateTo({  
                url: '/' + path  
            });  
        });  
        //移除跳转路径,避免后续打开默认为快捷方式唤醒  
        intent.removeExtra('path');  
    },
继续阅读 »

在A页面 点击按钮创建应用

createShortcut(){  
                const routes = getCurrentPages();  
                let curRoute = routes[routes.length - 1].route  
                // console.log(curRoute);  
                plus.navigator.createShortcut({  
                        name: "我是第一个",  
                        icon: '/static/c1.png',  
                        extra:{  
                            path:curRoute,// 应用地址  
                            title:'第一个快捷方式'  
                        },  
                        // toast: "已创建快捷方式到桌面"  
                    }, function(e){  
                        console.log("A=",e); // {"sure":false}  
                    }, function(e){  
                    console.log("B=",e);  
                    console.log("C=",e.message);  
                });

在app.vue页面进行读取快捷应用地址

onShow: function() {  
        console.log('App Show');  
        let main = plus.android.runtimeMainActivity();  
        const Intent = plus.android.importClass('android.content.Intent');  
        const intent = main.getIntent();  
        let path = intent.getStringExtra('path'); // list 里面的 path  
        if (path === null) return; //path为null或者未登录,直接return  
        //使用 $nextTick 延时跳转,避免在 tabBar 页面出现 BUG  
        this.$nextTick(function() {  
            //快捷方式执行逻辑(跳转页面的话,只需要在此处写上跳转逻辑)  
            uni.navigateTo({  
                url: '/' + path  
            });  
        });  
        //移除跳转路径,避免后续打开默认为快捷方式唤醒  
        intent.removeExtra('path');  
    },
收起阅读 »

FFmpeg升级增强完整版、跟官方video不冲突、视频编辑 音频编辑 视频压缩 合成 裁剪 图片 水印 gif 转码...(ios、andorid)

FFmpeg升级增强完整版、跟官方video不冲突、视频编辑 音频编辑 视频压缩 合成 裁剪 图片 水印 gif 转码...(ios、andorid):https://ext.dcloud.net.cn/plugin?id=8690

继续阅读 »

FFmpeg升级增强完整版、跟官方video不冲突、视频编辑 音频编辑 视频压缩 合成 裁剪 图片 水印 gif 转码...(ios、andorid):https://ext.dcloud.net.cn/plugin?id=8690

收起阅读 »

解决barcode识别超长内容无法识别、识别错误内容数字

Barcode 二维码 二维码扫描

已通过zxing的原生插件解决 兼容安卓7.0-12
遇到相同问题的私聊我

已通过zxing的原生插件解决 兼容安卓7.0-12
遇到相同问题的私聊我

今天阴历多少?你用过离线可用的pwa应用吗?

日历

在生活中,我们往往想要知道,今天阴历是多少?农历是多少?天干纪年是多少?甚至想要知道波斯历是多少?伊斯兰历是多少?

同是我们的手机和电脑不一定,24小时有网络,那怎么解决这些问题?

无意中,我找到了这款PWA应用,手机、浏览器都可以用,甚至只要访问一次,离线也可用。他提供:阴历、农历、波斯历、伊斯兰历显示。占用空间也不过500K,现分享给大家,希望大家喜欢:
https://pwa.ywz1.com/rili/index.html#/
提示:这是用uniapp开发的哦,大家赶紧去用uniapp开发pwa吧,也很方便

继续阅读 »

在生活中,我们往往想要知道,今天阴历是多少?农历是多少?天干纪年是多少?甚至想要知道波斯历是多少?伊斯兰历是多少?

同是我们的手机和电脑不一定,24小时有网络,那怎么解决这些问题?

无意中,我找到了这款PWA应用,手机、浏览器都可以用,甚至只要访问一次,离线也可用。他提供:阴历、农历、波斯历、伊斯兰历显示。占用空间也不过500K,现分享给大家,希望大家喜欢:
https://pwa.ywz1.com/rili/index.html#/
提示:这是用uniapp开发的哦,大家赶紧去用uniapp开发pwa吧,也很方便

收起阅读 »