3***@qq.com
3***@qq.com
  • 发布:2026-07-30 10:06
  • 更新:2026-07-30 10:30
  • 阅读:28

【报Bug】uni-app开发出的微信小程序,ios和安卓都可以访问登录接口,运行到鸿蒙工具(DevEco Studio)中可以运行,鸿蒙系统中的微信小程序一直调用失败无法登录,下面附代码。

分类:uni-app

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

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.15

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

基础库版本号: 0.0.0

项目创建方式: HBuilderX

示例代码:

//请求参数转义
const objToQueryString = (obj) => {
return Object.keys(obj)
.filter(key => obj[key] !== undefined && obj[key] !== null)
.map(key => encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]))
.join('&');
}

//登录接口
uni.request({
url: BASE_URL + "/api/login",
method: "POST",
data: objToQueryString(postData),
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: (res) => {
uni.hideLoading()
loading.value = false

        if (res.data.code == 200) {  
            try {  
                uni.setStorageSync("userInfo", res.data.data)  
                uni.setStorageSync("TOKEN", res.data.token)  
                uni.setStorageSync("TOKEN_KEY", res.data.tokenKey)  
                uni.showToast({  
                    title: '登录成功',  
                    icon: 'success',  
                    duration: 1500  
                })  
                setTimeout(() => {  
                    uni.switchTab({  
                        url: "/pages/home/index"  
                    })  
                }, 500)  
            } catch (e) {  
                console.error(e)  
            }  
        } else {  
            uni.showToast({  
                title: res.data.msg || '登录失败',  
                icon: 'none',  
                duration: 2000  
            })  
        }  
    },  
    fail: (err) => {  
        uni.hideLoading()  
        loading.value = false  
        uni.showToast({  
            title: '网络异常,请重试',  
            icon: 'none',  
            duration: 2000  
        })  
    }  
})

操作步骤:

输入账号密码,无法调用成功

预期结果:

可以登录成功

实际结果:

登录不成功

bug描述:

在鸿蒙系统微信小程序中,点击登录参数是有的,但是一直登录不成功。

2026-07-30 10:06 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

您好,请提供一下报错信息

Ask小助手

Ask小助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

感谢您的反馈。针对您提交的 Bug 报告,我们进行了详细的评审与分析,以下是具体的评审意见与排查建议:

1. Bug 反馈内容完整性评审

  • BUG 描述:描述较为清晰,指出了在鸿蒙系统微信小程序中点击登录时参数存在但调用失败,且对比了 iOS、Android 以及鸿蒙工具中的运行情况。
  • 代码示例:提供的代码片段展示了请求参数转义与 uni.request 登录接口的调用逻辑,但不够完整。代码中缺少了 postData 的来源与定义、BASE_URL 的声明,以及关键的上下文环境(如该段代码是否处于特定的条件编译中,是否包含 uni.login 获取 code 的前置逻辑等)。这会导致官方人员无法直接复制运行复现,需要自行补全缺失的变量与上下文。
  • 复现步骤:仅描述了“输入账号密码,无法调用成功”,过于简略。缺少对运行环境的具体说明,例如:是在鸿蒙系统真机上的微信小程序中测试,还是在鸿蒙系统的模拟器中?是否使用了自定义基座?
  • 预期结果与实际结果:预期结果合理,实际结果描述为“登录不成功”,但未说明具体的失败表现(例如是触发了 uni.requestfail 回调提示“网络异常”,还是进入了 success 回调但业务状态码非 200?),这会影响问题定性的判断。
  • 分类信息:包含了 PC 环境与 HBuilderX 版本号,但缺少手机系统版本、微信小程序基础库版本、Vue 版本等关键信息。

2. 代码逻辑与问题分析

从您提供的代码来看,登录接口使用 uni.request 发送 POST 请求,并手动将 postData 通过 objToQueryString 转换为 URL 编码的字符串,同时设置了 header: { 'content-type': 'application/x-www-form-urlencoded' }

在常规的 iOS 和 Android 微信小程序中,这种手动转换参数的做法通常能正常工作。但在鸿蒙系统的微信小程序底层实现中,对于网络请求的参数序列化处理可能存在差异。当 content-typeapplication/x-www-form-urlencoded 时,如果手动传入已经序列化完成的字符串,底层可能会再次对其进行编码或因格式预期不一致导致请求体解析异常,从而使得服务端无法正确接收参数,导致登录失败。

3. Bug 是否成立及替代方案

基于现有信息与知识库,目前无法直接判定为框架底层的 Bug,更倾向于这是跨平台网络请求参数序列化的环境差异问题。建议您尝试以下方案进行验证与修复:

方案一:直接传递 Object 对象(推荐)
uni.request 中,当 methodPOSTheader 设置为 application/x-www-form-urlencoded 时,框架本身会自动将数据对象转换为 URL 编码字符串。无需手动调用 objToQueryString,直接传入原始对象即可,这样可以避免因底层环境差异导致的二次编码问题。

修改后的代码示例:

uni.request({  
    url: BASE_URL + "/api/login",  
    method: "POST",  
    data: postData, // 直接传递 Object 对象,不要手动转义  
    header: {  
        'content-type': 'application/x-www-form-urlencoded'  
    },  
    success: (res) => {  
        // ... 您的成功逻辑  
    },  
    fail: (err) => {  
        // ... 您的失败逻辑  
    }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

方案二:补充信息以进一步确认
如果采用方案一后问题依然存在,请补充以下信息以便我们进一步排查是否为底层 Bug:

  1. 请提供完整的可复现的示例工程(包含 postData 定义及完整的请求上下文)。
  2. 请明确 uni.request 是触发了 fail 回调还是进入了 successres.data.code != 200,并打印出具体的 errres.data 内容。
  3. 请补充测试手机的鸿蒙系统版本以及微信基础库版本。

建议您先尝试调整代码中的参数传递方式,通常这能解决大部分因平台底层序列化差异导致的请求失败问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册