收藏
回答

wx.cloud.callContainer封装有没有ts版本?

https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/development/call/mini.html

/**
   * 封装的微信云托管调用方法
   * @param {*} obj 业务请求信息,可按照需要扩展
   * @param {*} number 请求等待,默认不用传,用于初始化等待
   */
  async call(obj, number=0){
    const that = this
    if(that.cloud == null){
      that.cloud = new wx.cloud.Cloud({
        resourceAppid: 'WXAAA', // 微信云托管环境所属账号,服务商appid、公众号或小程序appid
        resourceEnv: 'prod-001', // 微信云托管的环境ID
      })
      await that.cloud.init() // init过程是异步的,需要等待init完成才可以发起调用
    }
    try{
      const result = await that.cloud.callContainer({
        path: obj.path, // 填入业务自定义路径和参数,根目录,就是 / 
        method: obj.method||'GET', // 按照自己的业务开发,选择对应的方法
        // dataType:'text', // 如果返回的不是json格式,需要添加此项
        header: {
          'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
          // 其他header参数
        }
        // 其余参数同 wx.request
      })
      console.log(`微信云托管调用结果${result.errMsg} | callid:${result.callID}`)
      return result.data // 业务数据在data中
    } catch(e){
      const error = e.toString()
       // 如果错误信息为未初始化,则等待300ms再次尝试,因为init过程是异步的
      if(error.indexOf("Cloud API isn't enabled")!=-1 && number<3){
        return new Promise((resolve)=>{
          setTimeout(function(){
            resolve(that.call(obj,number+1))
          },300)
        })
      } else {
        throw new Error(`微信云托管调用失败${error}`)
      }
    }
  }

这个封装改成ts版时,new wx.cloud.Cloud会报错:Property 'Cloud' does not exist on type 'WxCloud'. Did you mean 'CloudID'?ts(2551)

回答关注问题邀请回答
收藏
登录 后发表内容