一致的。 官方运维平台展示的错误经过了类别过滤,只会展示最终由小程序本身代码触发的问题,信息的确会少一些。 预警群和运维平台一样有类别过滤。 我们查下看看是不是有问题。 如果版本号是 0 的话,那就是未上线版本的报错。我们看看这里是不是需要调整一下。
wx.onError、App.onError疑惑及如何捕获Promise异常?1、官方文档上说 wx.onError 和 App.onError 的回调时机与参数一致(https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onError.html),是指两种方式收集到的异常信息完全一致吗?我们实践过程中发现,wx.onError 获取到的信息比 App.onError 要少。 在我们上一个版本的微信小程序中,我们是在 App.onError 中监控异常,并通过 ELK 收集、查询异常。收集到的部分异常信息截图如下: [图片] [图片] 在我们小程序的最新版本中,我们使用了针对小程序平台的 Sentry SDK(https://github.com/lizhiyao/sentry-miniapp,该 SDK 原理是使用 wx.onError、wx.onPageNotFound、wx.onMemoryWarning 监控异常信息)进行信息收集上报,基于公司私有化部署的 Sentry 服务接收、存储、展示异常信息。结果发现 Sentry 服务没有收到 wx.onError 上报的异常(1. 上线之前有做过测试,Sentry SDK 是可以正常上报代码执行异常的。 2. 可以收集到页面无法找到、内存警告异常,说明线上版本小程序中 Sentry SDK 已经成功初始化,可以进行信息上报): [图片] 但是官方的微信预警群是有推送异常信息的: [图片] [图片] [图片] 2. App.onError 收集到的信息和官方后台运维中心收集到的信息是一致的吗?我们发现 onError 捕获的信息,在小程序官方后台查不到。 比如: 通过 App.onError 在 8.12 收集到了这样一条异常信息: [图片] 在小程序官方后台是搜不到这个异常信息记录的: [图片] 3. 假设 wx.onError 和 App.onError 获取到的异常信息完全一致,且和官方后台收集记录的异常信息完全一致。如果小程序后台运维中心的预警推送频率设置为 1次/5min,那么 onError 获取到的信息和微信预警群推送的信息完全一致吗? 4. 关于 Promise 的异常,对于浏览器有 window.onunhandledrejection,对于 node 有 global.process.on('unhandledRejection', callback()),对于小程序平台,有什么推荐的方式可以获取到 Promise 的异常吗?官方后台运维中心有收集到小程序中 Promise 中的异常吗?目前实践来看,小程序的 App.onError、wx.onError 中是无法捕获 Promise 的异常的。示例代码可参考:https://github.com/lizhiyao/sentry-miniapp/blob/master/examples/weapp/app.js 。 5. 在小程序官方后台及官方预警群中,会发现偶尔会出现非线上版本的异常被收集和上报了。请问这种情况是正常的吗? 比如:截图中 小程序版本对应为 0 的就是我们未发布版本代码中出现的异常。判断的依据是 /pages/homepage-config/skilled-tag/index 是新版本新增的页面,异常上报时新版本并未发布。 [图片]
2019-08-16抱歉这里遗漏了对应的 off 接口。我们加下。 这里可以先用 getCurrentPages 来判一下当前页面。
如何取消wx.onNetworkStatusChange监听?我在插件里面使用了该api,网络变化时showToast弹出了消息,结果回到使用该插件的小程序的页面里也弹出来了,给插件使用者造成了负面影响
2019-08-14报 Page is not a function 是因为插件需要基础库的插件页面支持(2.1.0)。 具体插件的问题需要联系插件开发者。
2019-08-12如果只是插件内部的全局量:随便写个 js 文件,在里面写个全局对象。其他文件 require 它就行了。 如果是要和小程序共享的:那只有搞个插件 js 接口在小程序和插件之间传一下。
小程序使用插件时 getApp() 无法使用 ?getApp is not a function; 小程序插件 plugin 文件下 怎么全局定义变量? 我要在主小程序拿 session 啊
2019-08-12我们一直也在考虑这里应该怎样设计比较合理。 我们有种考虑是直接给个接口 selectParentComponent 来取父组件,但是感觉有点违背依赖关系,跨插件的时候也有和 selectComponent 一样的问题。 或者考虑直接给个双向绑定机制。 又或者做个类似 mobx 绑定机制来解决。 后两者应该很快会做好。第一个我们再考虑下。
希望微信官方开放一个API:提供子组件获取父组件的实例对象在代码当中,模拟双向绑定,page调取组件可以使用 let pages = getCurrentPages(); let page = pages[pages.length - 1]; page.setData({ name:‘simple’ }) 但是组件里调取组件就不行了, 使用this.triggerEvent()太闹心了,封装组件不能模拟双向绑定,求官方看看是否可以这一块做出更好的方案。
2019-08-01回答了。请参考原帖。
调用插件组件内方法https://developers.weixin.qq.com/community/develop/doc/000e8c6253c22857a3476be1053400?highline=%E8%B0%83%E7%94%A8%E6%8F%92%E4%BB%B6%E7%BB%84%E4%BB%B6%E5%86%85%E6%96%B9%E6%B3%95 类似这个问题, 回答这个就行
2019-07-30挖个旧帖…… 默认情况下插件外部不能通过 selectComponent 直接调用插件自定义组件的 methods ,需要插件 export 出来,具体方法:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html#%E5%86%85%E7%BD%AE-behaviors
请问小程序插件内自定义组件的method内方法如何通过接口暴露给插件使用者调用?- 需求的场景描述(希望解决的问题) 插件内有一个自定义组建,该组件内有一个refresh方法进行组件的刷新,现需要插件使用者,在page的js内也可以调用该refresh方法进行插件的刷新 - 希望提供的能力 由于通过插件方式引入的组件不支持selectComponent方法 是否有其他方法能获取该组件并调用其内部方法?
2019-07-30没明白是个什么问题。 不过这里 wx:key 应改写成 wx:key="id" 。
页面中循环 if判断过后wx:for-index 索引不会根据现有内容重置[图片]
2019-07-30引入插件之后我们禁止 ES 内置对象中原有的方法被劫持(因为劫持可能会影响插件的运行)。
引入任何插件以后,数组和对象的实例被污染了由于需要引入插件,所以就没放代码片段,引入任何插件都可以触发此 bug。引入以后再控制台打印 [] 即可。 数组的实例上出现了大量的方法,这导致原型上的方法被覆盖了,因此如果对原型进入了劫持就没有效果了 基础库大于 1.9.2 可以复现,小于等于 1.9.2 没这个问题 [图片]
2019-07-30看起来是旧基础库版本的遗留 bug 。麻烦试下新一点的基础库?
某页面第1次进入正常,第2次必出错- 当前 Bug 的表现(可附上截图) [图片] 可以复现。页面只用了wx:if 没有elif else 自定义组件有嵌套。 完全看不出是哪里的问题。 请大大看一下!
2019-07-29