FEIAFEI
FEIAFEI
  • 发布:2022-07-25 15:39
  • 更新:2022-08-28 16:18
  • 阅读:717

【报Bug】uniapp onPageNotFound在支付宝小程序不生效

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

第三方开发者工具版本号: 版本3.0.2 (3.0.2)

基础库版本号: 2.7.19

项目创建方式: CLI

CLI版本号: 4.5.15

示例代码:
export default {  
    onLaunch: function() {  
        // #ifdef H5  
        console.log(  
            `%c hello uniapp %c v${version} `,  
            'background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px;  color: #fff',  
            'background:#007aff ;padding: 1px; border-radius: 0 3px 3px 0;  color: #fff; font-weight: bold;'  
        )  
        // #endif  
        // 线上示例使用  
        // console.log('%c uni-app官方团队诚邀优秀前端工程师加盟,一起打造更卓越的uni-app & uniCloud,欢迎投递简历到 hr2013@dcloud.io', 'color: red');  
        console.log('App Launch');  
        // #ifdef APP-PLUS  
        // App平台检测升级,服务端代码是通过uniCloud的云函数实现的,详情可参考:https://ext.dcloud.net.cn/plugin?id=4542  
        if (plus.runtime.appid !== 'HBuilder') { // 真机运行不需要检查更新,真机运行时appid固定为'HBuilder',这是调试基座的appid  
            checkUpdate()  
        }  

        // 一键登录预登陆,可以显著提高登录速度  
        uni.preLogin({  
            provider: 'univerify',  
            success: (res) => {  
                // 成功  
                this.setUniverifyErrorMsg();  
                console.log("preLogin success: ", res);  
            },  
            fail: (res) => {  
                this.setUniverifyLogin(false);  
                this.setUniverifyErrorMsg(res.errMsg);  
                // 失败  
                console.log("preLogin fail res: ", res);  
            }  
        })  
        // #endif  
    },  
    onShow: function() {  
        console.log('App Show')  
    },  
    onHide: function() {  
        console.log('App Hide')  
    },  
onPageNotFound(res) {  
  uni.showToast({  
    title: "onPageNotFound"  
  })  
},  
    globalData: {  
        test: ''  
    },  
    methods: {  
        ...mapMutations(['setUniverifyErrorMsg', 'setUniverifyLogin'])  
    }  
}

操作步骤:

<script>

export default {  

onPageNotFound(res) {  
  uni.showToast({  
    title: "onPageNotFound"  
  })  
},  
    globalData: {  
        test: ''  
    },  
    methods: {  

    }  
}  

</script>

预期结果:

预期编译到支付宝小程序该函数生效

实际结果:

实际编译后的man.js文件中有此函数,但是实际运行却执行不到

bug描述:

App.vue文件中添加onPageNotFound(res) {
uni.showToast({
title: "onPageNotFound"
})
},
编译到支付宝不生效,使用的最新版本的uniapp,微信的生效,支付宝不生效,编译后的文件也有对应的函数,但是就是不执行,以下是编译后的main.js文件
exports.default = void 0;
var _default = {
onPageNotFound: function onPageNotFound(res) {
uni.showToast({
title: "onPageNotFound"
});
},
globalData: {
test: ''
},
methods: {}
};

2022-07-25 15:39 负责人:DCloud_UNI_FXY 分享
已邀请:
DCloud_UNI_WZF

DCloud_UNI_WZF

  • FEIAFEI (作者)

    这个文档是很老的吧,之前支付宝没有这个方法,现在已经有了这个方法从支付宝基础库2.7.2开始,https://opendocs.alipay.com/mini/framework/app-detail#object%20%E5%B1%9E%E6%80%A7%E8%AF%B4%E6%98%8E

    2022-07-28 09:40

  • DCloud_UNI_WZF

    回复 FEIAFEI: 我测试了下,代码编译是OK的

    但是我用支付宝小程序原生开发,通过自定义编译模式设置不存在启动页,未触发 onPageNotFound 生命周期(微信小程序可以触发)

    你这边的触发条件是什么样的,原生开发可以触发吗

    2022-07-28 20:29

  • FEIAFEI (作者)

    回复 DCloud_UNI_WZF: 是的,用原生直接在app.js写onPageNotFound,不要使用这个自定义编译,直接草料二维码生成一个不存在的alipay开头的页面地址,就会走到app.js中写的onPageNotFound方法

    2022-07-29 14:10

  • FEIAFEI (作者)

    回复 FEIAFEI: 先扫码预览版本,然后联调设置跳转到此版本,然后扫描生成的草料二维码地址就可以跳转到预览版了,就能看到效果了

    2022-07-29 14:12

DCloud_UNI_WZF

DCloud_UNI_WZF

问题已确认,感谢反馈,已加分~
会在后续版本中修复,请关注版本更新

  • FEIAFEI (作者)

    好的,我通过修改源码也先解决了下,后续等着你们更新,学习下你们的方案

    2022-07-29 15:17

7***@qq.com

7***@qq.com

同求该问题,现在我这边解决办法..只能通过编译后再跑去代码中增加一下原生代码

该问题目前已经被锁定, 无法添加新回复