uni-app uniID.login 登录报错

uni-app uniID.login 登录报错

操作步骤:

调用以下代码就会报错

//老用户登录  
res = uniID.login({  
username,  
password: '100000'  
});

预期结果:

使用 uniID.login 应该不会报错

实际结果:

uniID.login 报错

bug描述:

调用 uniID.login 登录接口,报错 TypeError: t.includes is not a function

6 回复

当前用户的记录里面有没有一个role字段?如果有的话内容是什么?

更多关于uni-app uniID.login 登录报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有的, role 是 1

整数格式的 1

回复 h168168: 这是你自己加的字段吗?和uni-id的角色字段冲突了

回复 DCloud_uniCloud_WYQ: 是的,谢谢啊,改为 user_role 就正常了,后续有空再深入研究

这是一个典型的参数类型错误。TypeError: t.includes is not a function 错误表明代码在某个字符串(或数组)上尝试调用 .includes() 方法,但该变量实际上并不是字符串或数组类型。

根据你提供的代码片段,问题很可能出在 username 参数上。uniID.login 方法要求 username 参数是一个字符串,但你传入的 username 变量可能是一个其他类型(如 undefinednull、数字或对象)。

请按以下步骤排查:

  1. 检查 username 变量的值:在调用 uniID.login 之前,使用 console.log(typeof username, username) 打印 username 的类型和具体值。确认它是一个非空的字符串。

  2. 常见问题场景

    • 从输入框获取值:如果 username 来自 input 组件,请确保已正确通过 v-model@input 事件绑定并更新了数据。
    • 异步获取值:如果 username 是通过异步操作(如网络请求、uni.getStorage)获取的,请确保在值确实已返回后再调用登录接口。
  3. 修正后的代码示例

    // 确保 username 是字符串
    console.log('username类型:', typeof username, '值:', username); // 调试用
    
    if (typeof username === 'string' && username.trim()) {
        const res = await uniID.login({
            username: username.trim(), // 建议去除首尾空格
            password: '100000'
        });
        console.log('登录结果:', res);
    } else {
        uni.showToast({
            title: '用户名格式错误',
            icon: 'none'
        });
    }
回到顶部