HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

操作云函数失败, 提示npm install 失败 的解决方法。

云函数npm install 失败

问题: 部分用户在操作云函数(阿里云)时, 控制台会报错。 显示 npm install 失败, 请检查环境... 的提示语。

现状:针对用户出现的问题已经进行了分析排查, 最新版已经进行了优化修复。现将可能的问题总结如下, 请大家
对照相应的现象进行排查, 如果有以下没有提到的现象, 请跟帖回复。 我们会继续进行排查修复。

目前已知的现象如下:

  1. 部分用户使用淘宝源之后,出现了npm install 失败的问题。 针对这一现象最新版本已经做了相应优化。
    解决方法: 旧版本的话, 大家尝试下切换官方源, 或其他源。

  2. 部分用户自己安装了node并在HBuilder X 设置了 npm 的可执行路径 (可以在 顶部菜单 工具->设置->运行设置 node运行配置 分类中查看 该路径), node 在 windows 系统上一般默认安装在 C:\Program Files 路径下(如C:/Program Files/nodejs/npm), 在部分版本中, 该路径中带有空格导致npm install 失败, 现该问题已经修复。

解决方法:旧版本如果出现该问题可以尝试 更改node 的安装路径然后在HBuilder X 中再次设置npm 的可执行路径。 或者 配置 npm 环境变量, 并将HBuilder X中设置的npm 可执行路径删除。

继续阅读 »

问题: 部分用户在操作云函数(阿里云)时, 控制台会报错。 显示 npm install 失败, 请检查环境... 的提示语。

现状:针对用户出现的问题已经进行了分析排查, 最新版已经进行了优化修复。现将可能的问题总结如下, 请大家
对照相应的现象进行排查, 如果有以下没有提到的现象, 请跟帖回复。 我们会继续进行排查修复。

目前已知的现象如下:

  1. 部分用户使用淘宝源之后,出现了npm install 失败的问题。 针对这一现象最新版本已经做了相应优化。
    解决方法: 旧版本的话, 大家尝试下切换官方源, 或其他源。

  2. 部分用户自己安装了node并在HBuilder X 设置了 npm 的可执行路径 (可以在 顶部菜单 工具->设置->运行设置 node运行配置 分类中查看 该路径), node 在 windows 系统上一般默认安装在 C:\Program Files 路径下(如C:/Program Files/nodejs/npm), 在部分版本中, 该路径中带有空格导致npm install 失败, 现该问题已经修复。

解决方法:旧版本如果出现该问题可以尝试 更改node 的安装路径然后在HBuilder X 中再次设置npm 的可执行路径。 或者 配置 npm 环境变量, 并将HBuilder X中设置的npm 可执行路径删除。

收起阅读 »

解决tabbar加上subnvue侧滑菜单,通过api的hide方法有时无法关闭侧滑界面的问题

侧滑菜单 侧滑导航 subNVues subnvue

一、出现问题的步骤重新:登陆页-》tabbar主页-》侧滑菜单退出登陆-》登陆页-》tabbar主页-》侧滑菜单点击菜单项,调用hide方法,侧滑无法关闭

二、具体解决办法:
1、侧滑菜单的subnvue是公共的,目录为platforms\app-plus\subNVue\left-drawer;

2、程序入口页是登陆页,登陆成功后通过uni.reLaunch到含tabbar的主页,tabbar有四个页面,每个页面都有subnvue侧滑菜单,subNVues节点中id分别为leftDrawerTab1、leftDrawerTab2、leftDrawerTab3、leftDrawerTab4;

3、tabbar页面
3.1、在onNavigationBarButtonTap导航按钮监听中,通过getSubNVueById获取到subnvue,并通过subnvue的show方法显示侧滑菜单
const leftDrawerTab1 = uni.getSubNVueById('leftDrawerTab1')
leftDrawerTab1.show('slide-in-left', 200)

3.2、在onload方法中,通过getSubNVueById获取到subnvue,并通过subnvue的hide方法隐藏侧滑菜单,解决第一次加载可能会默认显示的问题
uni.getSubNVueById('leftDrawerTab1').hide('slide-out-left',200)

4、侧滑菜单的subnvue页中,在点击菜单项时,通过subnvue的hide方法,和plus.webview.WebviewObject的hide方法关闭侧滑,通过plus.webview的all方法,找到所有的webview,然后根据第二步设定的id,找到所有的侧滑菜单的view,通通关一遍。

uni.getCurrentSubNVue().hide('auto')
// 获取所有Webview窗口
var wvs = plus.webview.all();
for(var i=0; i<wvs.length; i ){
if(wvs[i].id.indexOf('leftDrawerTab') != -1) {
wvs[i].hide()
}
}

三、效果:代码比较难看,但是目前好像管用。

继续阅读 »

一、出现问题的步骤重新:登陆页-》tabbar主页-》侧滑菜单退出登陆-》登陆页-》tabbar主页-》侧滑菜单点击菜单项,调用hide方法,侧滑无法关闭

二、具体解决办法:
1、侧滑菜单的subnvue是公共的,目录为platforms\app-plus\subNVue\left-drawer;

2、程序入口页是登陆页,登陆成功后通过uni.reLaunch到含tabbar的主页,tabbar有四个页面,每个页面都有subnvue侧滑菜单,subNVues节点中id分别为leftDrawerTab1、leftDrawerTab2、leftDrawerTab3、leftDrawerTab4;

3、tabbar页面
3.1、在onNavigationBarButtonTap导航按钮监听中,通过getSubNVueById获取到subnvue,并通过subnvue的show方法显示侧滑菜单
const leftDrawerTab1 = uni.getSubNVueById('leftDrawerTab1')
leftDrawerTab1.show('slide-in-left', 200)

3.2、在onload方法中,通过getSubNVueById获取到subnvue,并通过subnvue的hide方法隐藏侧滑菜单,解决第一次加载可能会默认显示的问题
uni.getSubNVueById('leftDrawerTab1').hide('slide-out-left',200)

4、侧滑菜单的subnvue页中,在点击菜单项时,通过subnvue的hide方法,和plus.webview.WebviewObject的hide方法关闭侧滑,通过plus.webview的all方法,找到所有的webview,然后根据第二步设定的id,找到所有的侧滑菜单的view,通通关一遍。

uni.getCurrentSubNVue().hide('auto')
// 获取所有Webview窗口
var wvs = plus.webview.all();
for(var i=0; i<wvs.length; i ){
if(wvs[i].id.indexOf('leftDrawerTab') != -1) {
wvs[i].hide()
}
}

三、效果:代码比较难看,但是目前好像管用。

收起阅读 »

hbuilder的地址栏占一行

hbuilder的地址栏占一行能不能增加让内置浏览器的地址栏单独占一行
左边的功能和右边的地址栏在一栏相当的不好调试 一会拉过去一会拉过来
通常调试传id的话单独一行修改方便的多

hbuilder的地址栏占一行能不能增加让内置浏览器的地址栏单独占一行
左边的功能和右边的地址栏在一栏相当的不好调试 一会拉过去一会拉过来
通常调试传id的话单独一行修改方便的多

用宝塔面板的赶快升级一下,数据库被删了。。。

RT。。。看到的小伙伴升级下吧。

RT。。。看到的小伙伴升级下吧。

subNVue子窗体开发踩坑记录

subnvue

1.如无绝对必要,请勿使用subNVue!如无绝对必要,请勿使用subNVue!如无绝对必要,请勿使用subNVue!

  1. subNVue页面基本设置,是在pages.json中,如果作用是子窗体,不必单独注册,而是要注册在引用它的vue路径下面;
  2. 子窗体默认从顶部弹出,如果希望从底部弹出,使用dock设置无效,可以在pages.json中设置:"bottom": "0"实现;
  3. 键盘弹起后,如果期望子窗体的高度不被压缩(扣除键盘的高度),可以通过在子窗体的methods中定义子窗体的动态高度,使用setStyle,可动态设置键盘弹起或关闭时的高度,例如可以通过离顶部或底部的百分比来实现。触发事件,通过在template的input标签上进行绑定:@focus, @blur
  4. vue和subNVue页面之间的通讯,使用uni.$emit进行传值和uni.$on接收传值,但是,但是,但是:接收传值时,使用this.var = data.*,将无法在页面获得数据渲染!你必须使用 const vm = this; 先进行指向转化,下面使用vm.var = data.来接收传值,或调用函数;
  5. 如果是一个公共子窗体,则你必须给它起别名!具体来说:id: bieming。没错,id就是这么随意,完全可以由你来定义,当然你没法在奥义的官方文档中猜出这个。在pages.json中引用时,有几个页面要引用,就必须起几个别名,不能重复!在相应的vue页面,你也必须使用与别名一致的id来引用子窗体;
  6. 如果是公共子窗体,你必须使用相应的别名来进行操作。为了避免错误,应当在从vue页面传值时,指定一个参数,来进行来源区分,并在子窗体页面,接收此参数并用于条件判断的依据;
  7. 不要期望从官方文档中获得清晰的思路;
  8. 不要期望从官方运营的QQ群中获得响应或有价值响应;
  9. 不要期望在社区发帖就能获得帮助;
    11.虽然我解决了这些问题,但是从理论上,时间本不应该花在这些问题上,因为这些问题并不是什么技术难题,这只是经验,与技术能力的提升无关
继续阅读 »

1.如无绝对必要,请勿使用subNVue!如无绝对必要,请勿使用subNVue!如无绝对必要,请勿使用subNVue!

  1. subNVue页面基本设置,是在pages.json中,如果作用是子窗体,不必单独注册,而是要注册在引用它的vue路径下面;
  2. 子窗体默认从顶部弹出,如果希望从底部弹出,使用dock设置无效,可以在pages.json中设置:"bottom": "0"实现;
  3. 键盘弹起后,如果期望子窗体的高度不被压缩(扣除键盘的高度),可以通过在子窗体的methods中定义子窗体的动态高度,使用setStyle,可动态设置键盘弹起或关闭时的高度,例如可以通过离顶部或底部的百分比来实现。触发事件,通过在template的input标签上进行绑定:@focus, @blur
  4. vue和subNVue页面之间的通讯,使用uni.$emit进行传值和uni.$on接收传值,但是,但是,但是:接收传值时,使用this.var = data.*,将无法在页面获得数据渲染!你必须使用 const vm = this; 先进行指向转化,下面使用vm.var = data.来接收传值,或调用函数;
  5. 如果是一个公共子窗体,则你必须给它起别名!具体来说:id: bieming。没错,id就是这么随意,完全可以由你来定义,当然你没法在奥义的官方文档中猜出这个。在pages.json中引用时,有几个页面要引用,就必须起几个别名,不能重复!在相应的vue页面,你也必须使用与别名一致的id来引用子窗体;
  6. 如果是公共子窗体,你必须使用相应的别名来进行操作。为了避免错误,应当在从vue页面传值时,指定一个参数,来进行来源区分,并在子窗体页面,接收此参数并用于条件判断的依据;
  7. 不要期望从官方文档中获得清晰的思路;
  8. 不要期望从官方运营的QQ群中获得响应或有价值响应;
  9. 不要期望在社区发帖就能获得帮助;
    11.虽然我解决了这些问题,但是从理论上,时间本不应该花在这些问题上,因为这些问题并不是什么技术难题,这只是经验,与技术能力的提升无关
收起阅读 »

处理:end value has mixed support, consider using flex-end instead

提示:end value has mixed support, consider using flex-end instead
经检查,没有规范的写flex的属性,正确的写法是 flex-end 或 flex-start

错误的写法

align-items:end;

正确写法是

align-items:flex-end;

如出现:start value has mixed support, consider using flex-start instead
也是同样的问题,要使用flex-start 而不是start

继续阅读 »

提示:end value has mixed support, consider using flex-end instead
经检查,没有规范的写flex的属性,正确的写法是 flex-end 或 flex-start

错误的写法

align-items:end;

正确写法是

align-items:flex-end;

如出现:start value has mixed support, consider using flex-start instead
也是同样的问题,要使用flex-start 而不是start

收起阅读 »

问题记录-生命周期

uniapp

1.onReachBottom页面滚动触底函数,若page设置了height:100%,overflow,则不会触发;
解决:overflow去掉就可以了,overflow-x,overflow-y也不行

2.有些地方刷新数据 会在methods直接调用 this.onShow 或者是 this.onLoad方法,现在这样调用会报错undefined,不能偷懒写个初始化函数;onshow 写在methods中也生效,按规范生命周期最好写在methods外面。

继续阅读 »

1.onReachBottom页面滚动触底函数,若page设置了height:100%,overflow,则不会触发;
解决:overflow去掉就可以了,overflow-x,overflow-y也不行

2.有些地方刷新数据 会在methods直接调用 this.onShow 或者是 this.onLoad方法,现在这样调用会报错undefined,不能偷懒写个初始化函数;onshow 写在methods中也生效,按规范生命周期最好写在methods外面。

收起阅读 »

支付相关

支付

1、小程序,app,h5 支付的appid都不一样,openid也不一样,需要分端处理,接口也是

1、小程序,app,h5 支付的appid都不一样,openid也不一样,需要分端处理,接口也是

canvas相关

canvas

1、ctx.measureText 这个方法突然就报错了,之前APP用不了这个方法 改成H5下才使用,现在H5也报错说is not a function(2019.12.26)


解决:h5也不使用了,直接截图字符串的个数

2、小程序绘图base64的不显示,原因:小程序不支持base64
解决方法尝试:
1:replace(/n/g, '') 开发者工具无效
2:replace(/[\r\n]/g, '') 字符串太长传输中加入回车导致。 开发者工具有的有效有的无效 ,真机都无效
3:开始是svg的base64显示不了,改成png的就ok 无效
4:开发者工具有效 ,真机无效

success: function (res) {   
        var data = res.data  
        var array = wx.base64ToArrayBuffer(res.data)  
        var base64 = wx.arrayBufferToBase64(array)  
        if (res.statusCode == 200) {  
          that.setData({  
            imageData: 'data:image/jpeg;base64,' + base64,  // data 为接口返回的base64字符串    
          })  
        }  
      }

5:writeFile getimageinfo 开发者工具报错,真机有效,此方法仅针对小程序

let self = this;  
            var fs = uni.getFileSystemManager();  
            fs.writeFile({  
              filePath: `${wx.env.USER_DATA_PATH}/resource/demo.png`,  
              data: res.data.img,  
              encoding: 'base64',  
              success(res) {  
                uni.getImageInfo({  
                  src: `${wx.env.USER_DATA_PATH}/resource/demo.png`,  
                  success(res) {  
                    self.$set(self.canvasObj, 'qr', `${wx.env.USER_DATA_PATH}/resource/demo.png`);  
                  },  
                  fail(err) {  
                    console.error(err)  
                  }  
                })  
              },  
              fail(err) {  
                console.error(err)  
              }  
            })
继续阅读 »

1、ctx.measureText 这个方法突然就报错了,之前APP用不了这个方法 改成H5下才使用,现在H5也报错说is not a function(2019.12.26)


解决:h5也不使用了,直接截图字符串的个数

2、小程序绘图base64的不显示,原因:小程序不支持base64
解决方法尝试:
1:replace(/n/g, '') 开发者工具无效
2:replace(/[\r\n]/g, '') 字符串太长传输中加入回车导致。 开发者工具有的有效有的无效 ,真机都无效
3:开始是svg的base64显示不了,改成png的就ok 无效
4:开发者工具有效 ,真机无效

success: function (res) {   
        var data = res.data  
        var array = wx.base64ToArrayBuffer(res.data)  
        var base64 = wx.arrayBufferToBase64(array)  
        if (res.statusCode == 200) {  
          that.setData({  
            imageData: 'data:image/jpeg;base64,' + base64,  // data 为接口返回的base64字符串    
          })  
        }  
      }

5:writeFile getimageinfo 开发者工具报错,真机有效,此方法仅针对小程序

let self = this;  
            var fs = uni.getFileSystemManager();  
            fs.writeFile({  
              filePath: `${wx.env.USER_DATA_PATH}/resource/demo.png`,  
              data: res.data.img,  
              encoding: 'base64',  
              success(res) {  
                uni.getImageInfo({  
                  src: `${wx.env.USER_DATA_PATH}/resource/demo.png`,  
                  success(res) {  
                    self.$set(self.canvasObj, 'qr', `${wx.env.USER_DATA_PATH}/resource/demo.png`);  
                  },  
                  fail(err) {  
                    console.error(err)  
                  }  
                })  
              },  
              fail(err) {  
                console.error(err)  
              }  
            })
收起阅读 »

安卓 讯飞 文字转语音 离线打包

文字转语音

引入 speech_ifly-release.aar,speech-release.aar

AndroidManifest.xml 加入
"<uses-permission android:name=""android.permission.INTERNET""/>
<uses-permission android:name=""android.permission.WRITE_EXTERNAL_STORAGE""/>
<uses-permission android:name=""android.permission.RECORD_AUDIO""/>
<uses-permission android:name=""android.permission.ACCESS_NETWORK_STATE""/>
<uses-permission android:name=""android.permission.ACCESS_WIFI_STATE""/>
<uses-permission android:name=""android.permission.CHANGE_NETWORK_STATE""/>
<uses-permission android:name=""android.permission.READ_PHONE_STATE""/>"

编译报错jetifier 的话 就 在 gradle.properties加上 android.jetifier.blacklist=speech_ifly-release.aar

继续阅读 »

引入 speech_ifly-release.aar,speech-release.aar

AndroidManifest.xml 加入
"<uses-permission android:name=""android.permission.INTERNET""/>
<uses-permission android:name=""android.permission.WRITE_EXTERNAL_STORAGE""/>
<uses-permission android:name=""android.permission.RECORD_AUDIO""/>
<uses-permission android:name=""android.permission.ACCESS_NETWORK_STATE""/>
<uses-permission android:name=""android.permission.ACCESS_WIFI_STATE""/>
<uses-permission android:name=""android.permission.CHANGE_NETWORK_STATE""/>
<uses-permission android:name=""android.permission.READ_PHONE_STATE""/>"

编译报错jetifier 的话 就 在 gradle.properties加上 android.jetifier.blacklist=speech_ifly-release.aar

收起阅读 »

寻找兼职合作美工

外包

寻找长期合作的兼职美工,不定时订单,我们内部美工没空的时候会外包,有兴趣或者推荐的

加VX:13216672697 请带作品来,需要做过移动端的

寻找长期合作的兼职美工,不定时订单,我们内部美工没空的时候会外包,有兴趣或者推荐的

加VX:13216672697 请带作品来,需要做过移动端的