dcloudio / uni-app

A cross-platform framework using Vue.js
https://uniapp.dcloud.io
Apache License 2.0
40.15k stars 3.64k forks source link

uniapp微信小程序打包成h5,无法以uni["navigateTo"]的方式使用uni.navigateTo #5032

Closed AaronWongM closed 2 months ago

AaronWongM commented 4 months ago

uniapp微信小程序打包成h5,无法以uni["navigateTo"]的方式使用uni.navigateTo,小程序使用正常 会报错TypeError: uni[n] is not a function

// 公共跳转方法  
jumpPage(url, jumpType = "navigateTo") {  
    uni[jumpType]({  
        url  
    })  
}

使用时

// 判断是否要保留当前页的逻辑  
...  
// 得出应该使用的跳转方式  
const jumpType = true ? "navigateTo" : "redirectTo"  
// 跳转  
jumpPage('page/index/index', jumpType )
GRCmade commented 4 months ago

我这里测试的正常,可能是你得写成:

uni[jumpType]({  
        url:url  
    })  

7db8af8578f4b128ba1cbb018eca7aca

AaronWongM commented 4 months ago

我这里测试的正常,可能是你得写成:

uni[jumpType]({  
        url:url  
    })  

7db8af8578f4b128ba1cbb018eca7aca

本地运行是没有问题的,但是点击hbuilderX的发行->网站-PC Web或手机H5之后,将打包出来的文件部署到线上,才会报错,此时在控制台打印uni是没有对应的跳转方法的

GRCmade commented 4 months ago

感谢反馈,确认有这个问题,你先暂时使用uni.这种方式吧,之后会调整

bfc846958672 commented 2 months ago

发行模式下, 代码会压缩, 方法名也会压缩调整,所以用原来的方法名时无效的,可以采用以下方案

switch(type) {
    case : 'navigateTo': uni.navigateTo({ url });break;
    case : 'redirectTo': uni.redirectTo({ url });break;
}