首先定义一个云函数目录
const path = require('path') const CopyWebpackPlugin = require('copy-webpack-plugin') module.exports = { // 配置路径别名 configureWebpack: { devServer: { // 调试时允许内网穿透,让外网的人访问到本地调试的H5页面 disableHostCheck: true }, plugins: [ new CopyWebpackPlugin([ { from: path.join(__dirname, 'cloudfunctions'), to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'cloudfunctions') } ]) ] }, //productionSourceMap: false, }
再然后需要配置copy-webpack-plugin,这个是为了生成云函数文件夹,且不被uni-app编译
新建云函数,如获取手机号,注意package 的name一定要和文件夹一样,否者会无反应,如果需要其他openapi,则需要新建一个config.json,具体看官网https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html#%E4%BA%91%E8%B0%83%E7%94%A8
然后就是云函数代码
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { var moblie = event.weRunData.data.phoneNumber return { moblie } }
注意,在app.js 或app.vue 一定要先init,否则找不到云开发,env,云环境,最好配置一下
获取手机号就简单了
decryptPhoneNumber(e){ let that = this if(e.detail.errMsg=="getPhoneNumber:fail user deny"){ console.log('拒绝授权'); }else{ //允许授权 uni.showLoading({ title: '获取中..' }) wx.cloud.callFunction({ name: 'getMobile', data: { weRunData: wx.cloud.CloudID(e.detail.cloudID), } }).then(res => { that.form.phone = res.result.moblie uni.hideLoading() }).catch(err => { console.error(err); uni.hideLoading() }); } },
就完事啦