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
当前用户的记录里面有没有一个role字段?如果有的话内容是什么?
更多关于uni-app uniID.login 登录报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有的, role 是 1
回复 h168168: 这是你自己加的字段吗?和uni-id的角色字段冲突了
回复 DCloud_uniCloud_WYQ: 是的,谢谢啊,改为 user_role 就正常了,后续有空再深入研究
这是一个典型的参数类型错误。TypeError: t.includes is not a function 错误表明代码在某个字符串(或数组)上尝试调用 .includes() 方法,但该变量实际上并不是字符串或数组类型。
根据你提供的代码片段,问题很可能出在 username 参数上。uniID.login 方法要求 username 参数是一个字符串,但你传入的 username 变量可能是一个其他类型(如 undefined、null、数字或对象)。
请按以下步骤排查:
-
检查
username变量的值:在调用uniID.login之前,使用console.log(typeof username, username)打印username的类型和具体值。确认它是一个非空的字符串。 -
常见问题场景:
- 从输入框获取值:如果
username来自input组件,请确保已正确通过v-model或@input事件绑定并更新了数据。 - 异步获取值:如果
username是通过异步操作(如网络请求、uni.getStorage)获取的,请确保在值确实已返回后再调用登录接口。
- 从输入框获取值:如果
-
修正后的代码示例:
// 确保 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' }); }


