4***@qq.com
4***@qq.com
  • 发布:2024-02-27 10:25
  • 更新:2024-09-20 11:43
  • 阅读:713

【报Bug】在app.vue中监听onError事件,无法触发

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版

HBuilderX类型: 正式

HBuilderX版本号: 3.99

第三方开发者工具版本号: 1.06.2401020 stable

基础库版本号: 3.3.3

项目创建方式: HBuilderX

示例代码:

home.vue 代码
methods:{
async getDiyInfo() {
let res = await this.$api.sendRequest({
url: '/api/diyview/info',
async: false,
data: {
site_id: this.shop_id || 0
}
});
if (res.data) {

                let data = JSON.parse(res.data.value)  
                this.diyData = data+ceshi  

}}
onLoad(){
this.getDiyInfo()
}

app.vue代码
export default {
onError(err){
console.log('aaaaerr',err)
}
}

操作步骤:

执行以上代码

预期结果:

触发onError事件

实际结果:

onError事件没触发

bug描述:

在app.vue中监听onError事件,无法触发

如何使用原生微信小程序开发方式,onError是可以正常处罚

2024-02-27 10:25 负责人:HRK_01 分享
已邀请:
HRK_01

HRK_01

这是我的测试代码,可以正常触发。

//app.vue  
<script>  
    export default {  
        onLaunch: function() {  
            console.log('App Launch');  
            setTimeout(() => {  
                throw new Error("aaa");  
            },2000)  
            uni.setLocale('zh-Hans')  
        },  
        onShow: function() {  
            console.log('App Show');  
        },  
        onHide: function() {  
            console.log('App Hide');  
        },  
        onError: function(e) {  
            console.log("异常触发:",e);  
        }  
    };  
</script>
  • 4***@qq.com (作者)

    你在这个app.vue抛出的错误(这个场景我这边也可以正常触发),我的场景是在其他页面vue文件抛出的错误无法触发

    2024-02-28 10:02

  • HRK_01

    回复 4***@qq.com: 我刚刚在其他vue文件抛出错误测试了一下,也是正常触发,看看你的问题工程

    2024-02-28 11:33

  • 4***@qq.com (作者)

    回复 HRK_01: 那就奇怪了,onPageNotFound这个事情就正常触发的;我的工程是youpin_shop项目

    2024-02-28 11:50

  • 4***@qq.com (作者)

    回复 HRK_01: 后续在测试了一下,函数如何使用关键字async 错误就监听不到,未使用async就可以监听到

    2024-02-28 12:46

  • 4***@qq.com (作者)

    回复 4***@qq.com: 小程序原生代码编写方式也是有这样的情况

    2024-02-28 12:54

  • HRK_01

    回复 4***@qq.com: 这需要去原生小程序平台那里反馈哦

    2024-02-28 20:08

YUANRJ

YUANRJ

vue2还是vue3?

HRK_01

HRK_01

能否提供一下工程?确定这个网络请求报错了吗

  • 4***@qq.com (作者)

    是故意使用一个未定义的变量this.diyData = data+ceshi ,控制台可以正常打印错误,onError还是捕抓不到,这个语句在原生小程序中就可以触发onError的事件;下面自行跑错错误的我这边也测试,一样无法触发onError,async getDiyInfo() {

    let res = await this.$api.sendRequest({

    url: '/api/diyview/info',

    async: false,

    data: {

    name: 'DIYVIEW_SHOP_INDEX',

    site_id: this.shop_id || 0

    }

    });

    if (res.data) {


                    let data = JSON.parse(res.data.value)  
    this.diyData = data
    throw new Error('就是错了')}}

    2024-02-28 10:00

  • HRK_01

    回复 4***@qq.com: 已在上面回复

    2024-03-13 17:29

1***@qq.com

1***@qq.com

我跟你的情况一摸一样,也是不行,在单页面就不触发

  • HRK_01

    请看一下上面回复

    2024-03-13 17:30

1***@qq.com

1***@qq.com

app.vue页面我也能正常触发,在别的页面里面触发不了

  • HRK_01

    用原生代码写也能正常触发吗

    2024-03-13 20:43

4***@qq.com

4***@qq.com

我也遇到这个问题,这样是可以触发的

async function scanCode() {  
  const res = await wx  
    .scanCode({  
      scanType: 'qrCode'  
    })  
  if (res.result) {  
    await oxygenChamber.connection(res.result)  
  }  
}

但是这样就不行(错误没有被捕获直接抛到控制台了):

 function scanCode() {  
  wx.scanCode({  
    scanType: 'qrCode'  
  }).then(async (res) => {  
    if (res.result) {  
      await oxygenChamber.connection(res.result)  
    }  
  })  
}

要回复问题请先登录注册