uni-app 真机上无法调用云端云函数
uni-app 真机上无法调用云端云函数
产品分类
uniapp/App
示例代码
login(){
uni.login({
provider: 'univerify',
univerifyStyle: {
"fullScreen": false, // 是否全屏显示,true表示全屏模式,false表示非全屏模式,默认值为false。
"backgroundColor": "#ffffff", // 授权页面背景颜色,默认值:#ffffff
"phoneNum": {
"color": "#000000", // 手机号文字颜色 默认值:#000000
},
"slogan": {
"color": "#8a8b90", // slogan 字体颜色 默认值:#8a8b90
},
"icon": {
"path": "static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
},
"authButton": {
"normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5
"highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)
"disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)
"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff
"title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”
},
"otherLoginButton": {
"visible": "false", // 是否显示其他登录按钮,默认值:true
},
},
success: (res) => {
console.log(JSON.stringify(res) )
uniCloud.callFunction({
name: 'getPhoneNumber',
data: {
access_token: res.authResult.access_token,
openid: res.authResult.openid
}
}).then(dataRes => {
console.log(dataRes)
uni.showToast({
title: `当前手机号为:${dataRes.result.phoneNumber}`,
icon: "none"
})
}).catch(err => {
console.log('云函数报错', err)
})
uni.showToast({
title: res.authResult,
icon: "none"
})
uni.closeAuthView() //关闭一键登录弹出窗口
},
fail(res) { // 登录失败
uni.closeAuthView() //关闭一键登录弹出窗口
console.log(JSON.stringify(res));
console.log('失败')
},
})
}
操作步骤
点击按钮方法,弹出一键登录页面,获取手机号登录,但是后续的callfuncation 方法无法调用。
预期结果
获取到手机号
实际结果
当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。
- 如果不使用uniCloud本地调试服务,请直接忽略此信息。
- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。
- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试
- 检查系统防火墙是否拦截了HBuilderX自带的nodejs
- 检查是否错误的使用拦截器修改uni.request方法的参数
11:02:12.432 连接本地调试服务失败,请检查客户端是否和主机在同一局域网下
11:02:12.432 云函数报错, Error: 连接本地调试服务失败,请检查客户端是否和主机在同一局域网下
bug描述
用基座在手机上调试无法获取到手机号码,手机号弹出可以,但是无法调用云函数中的方法,本地可以用json参数调用成功
开发环境及版本信息
项目创建方式 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机系统版本号 | 手机厂商 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
---|---|---|---|---|---|---|---|---|---|---|---|
HBuilderX | Windows | win10 | 正式 | 3.99 | Android | Android 11 | 小米 | MXI 2S | vue | vue2 | 云端 |
更多关于uni-app 真机上无法调用云端云函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app中,如果在真机上无法调用云端云函数,通常是由于几个常见的问题导致的,比如权限配置、网络请求设置、云函数部署状态等。以下是一些检查和解决的代码案例,帮助你定位并解决问题。
1. 检查云函数权限配置
确保云函数的权限配置正确,允许uni-app的客户端调用。在云开发控制台中,检查云函数的触发方式是否包含“小程序/H5端调用”。
2. 检查uni-app项目配置
在manifest.json
中,确保已经配置了云函数的相关信息:
{
"mp-weixin": {
"cloudfunctionRoot": "cloudfunctions/",
"setting": {
"urlCheck": false
}
}
}
3. 调用云函数的代码示例
确保你的调用代码正确。以下是一个调用云函数的示例:
// 引入云开发SDK
const cloud = require('wx-server-sdk');
cloud.init({
env: 'your-env-id', // 填写你的云开发环境ID
traceUser: true,
});
// 调用云函数
uni.cloud.callFunction({
name: 'yourCloudFunctionName', // 云函数名称
data: {
// 传递给云函数的参数
param1: 'value1',
param2: 'value2'
},
success: res => {
console.log('云函数调用成功', res.result);
},
fail: err => {
console.error('云函数调用失败', err);
}
});
4. 检查网络请求
确保真机的网络请求没有被阻塞。在某些情况下,真机的网络请求可能因为防火墙、代理设置等原因被阻止。
5. 云函数部署状态
在云开发控制台中检查云函数的部署状态,确保云函数已经正确部署并处于可用状态。
6. 日志输出
在云函数和客户端代码中增加日志输出,以便更好地追踪问题。在云函数中,可以使用console.log
输出日志;在客户端,同样可以通过console.log
或uni.showToast
等方式输出日志或提示信息。
7. 清理缓存
有时候,清理uni-app的缓存和重新编译项目可以解决一些莫名其妙的问题。可以尝试清理项目缓存并重新运行。
通过上述步骤和代码示例,你应该能够定位并解决在uni-app真机上无法调用云端云函数的问题。如果问题仍然存在,建议详细检查控制台输出的错误信息,以便进一步分析。