uni-app uni-id 插件出错报错

uni-app uni-id 插件出错报错

产品分类:  
uniCloud/阿里云  

### 示例代码:

var setCode = await this.uniID.setVerifyCode({ mobile, code:“3030”, expiresIn:900, type:“bind” })


### 操作步骤:
调用该方法则会出现报错

### 预期结果:
调用该方法则会出现报错

### 实际结果:
调用该方法则会出现报错

### bug描述:
调用uni-id 的 设置验证码 方法,出现了报错.

![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20211102/f1e1faa4dcf714db007fe3518afae58a.png)

更多关于uni-app uni-id 插件出错报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

打印一下你的mobile传的什么

更多关于uni-app uni-id 插件出错报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


手机号码

回复 2***@qq.com: 手机号码是数字形式还是字符串形式

回复 DCloud_uniCloud_WYQ: 字符串类型的,

回复 2***@qq.com: uni-id版本多少?我这用你这段代码传了个字符串的mobile没什么报错

最好打印一下整个参数看看你传入的mobile到底对不对,这个错误应该只出现在mobile不是字符串的场景

回复 DCloud_uniCloud_WYQ: “version”: “3.3.7”,

根据你提供的报错信息,这是一个典型的云函数调用问题。错误显示this.uniID.setVerifyCode不是一个函数,这通常是因为在uni-app前端直接调用了uni-id插件的方法,而uni-id插件的方法需要在云函数中运行。

问题分析:

  1. uniID.setVerifyCode是uni-id插件提供的服务端方法,只能在云函数中调用
  2. 在前端页面中直接调用会导致undefined错误
  3. 从代码结构看,你是在Vue组件的methods中直接调用了云函数方法

解决方案:

方案一:通过云函数调用(推荐)

  1. 在uniCloud/cloudfunctions目录下创建云函数,比如set-verify-code
  2. 在云函数中调用uni-id方法:
// 云函数 set-verify-code/index.js
'use strict';
const uniID = require('uni-id')
exports.main = async (event, context) => {
  const {
    mobile,
    code = "3030",
    expiresIn = 900,
    type = "bind"
  } = event
  
  const res = await uniID.setVerifyCode({
    mobile,
    code,
    expiresIn,
    type
  })
  return res
}
  1. 在前端调用云函数:
// 前端页面
const setCode = await uniCloud.callFunction({
  name: 'set-verify-code',
  data: {
    mobile: '13800138000',
    code: '3030',
    expiresIn: 900,
    type: 'bind'
  }
})

方案二:使用uni-id-co(客户端调用) 如果你需要在客户端直接操作,可以使用uni-id-co:

  1. 安装uni-id-co插件
  2. 在前端调用:
import uniIdCo from '@/uni_modules/uni-id-co/js_sdk/uni-id-co.js'
const setCode = await uniIdCo.setVerifyCode({
  mobile,
  code: "3030",
  expiresIn: 900,
  type: "bind"
})
回到顶部