运行时依赖
安装命令
点击复制本土化适配说明
wechat-miniprogram-dev 安装说明: 安装命令:["openclaw skills install wechat-miniprogram-dev"] 该技能用于微信相关操作,可能需要相应的平台账号或API密钥
技能文档
微信小程序云开发指南 项目结构 we应用-project/ ├── miniprogram/ # 小程序前端代码 │ ├── 应用.js │ ├── 应用.json │ ├── 应用.wxss │ ├── pages/ │ │ ├── 索引/ # 页面目录 │ │ │ ├── 索引.js │ │ │ ├── 索引.wxml │ │ │ ├── 索引.wxss │ │ │ └── 索引.json │ │ └── ... │ ├── 组件s/ │ ├── utils/ │ └── images/ ├── cloudfunctions/ # 云函数目录 │ ├── 获取Task进度/ │ │ ├── 索引.js │ │ └── package.json │ └── ... ├── cloudbaserc # 云开发配置 ├── project.config.json # 小程序项目配置 └── key/ └── private.key # 微信公众号密钥
关键配置文件 project.config.json { "应用id": "your-应用id", "cloudfunctionRoot": "cloudfunctions/", "设置ting": { "url检查": false, "es6": true, "enhance": true } }
云函数 package.json { "name": "function-name", "version": "1.0.0", "dependencies": { "wx-server-sdk": "~2.6.3" } }
miniprogram-ci 常用命令 部署云函数 npx miniprogram-ci cloud functions 上传 \ --pp ./ \ --pkp ./key/private.key \ -r 1 \ -e cloudbase-环境ID \ -n 函数名 \ -p ./cloudfunctions/函数名 \ --rnpm
参数说明:
--pp: 项目路径 --pkp: 私钥路径 -r: 机器人编号 (1-30) -e: 云开发环境ID -n: 云函数名称 -p: 云函数代码路径 --rnpm: 远程安装依赖 预览小程序 npx miniprogram-ci preview \ --pp ./miniprogram \ --pkp ./key/private.key \ --qr-dest ./preview-qrcode.png \ --qr-格式化 image \ --应用id your-应用id \ -r 1 \ --enable-qrcode true \ --uv "1.0.0" \ --threads 0 \ --use-cos false
上传小程序 npx miniprogram-ci 上传 \ --pp ./miniprogram \ --pkp ./key/private.key \ --应用id your-应用id \ -r 1 \ --uv "1.0.0" \ --ud "更新描述"
云函数开发要点 初始化云开发 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
获取用户信息 const { OPENID } = cloud.获取WX上下文()
获取临时文件URL a同步 function 获取TempFileURL(fileID) { if (!fileID) return null try { const 结果 = awAIt cloud.获取TempFileURL({ file列出: [fileID] }) if (结果.file列出 && 结果.file列出[0]) { return 结果.file列出[0].tempFileURL } } catch (e) { console.error('获取临时URL失败:', e) } return null }
调用其他云函数 const 结果 = awAIt cloud.callFunction({ name: '函数名', data: { / 参数 / } })
图像处理扩展 安装扩展
在云开发控制台 → 扩展能力 → 安装「图像处理」
使用示例 const extCi = require('@cloudbase/扩展-ci') cloud.register扩展(extCi)
// 添加水印 const res = awAIt cloud.invoke扩展('CloudInfinite', { action: 'WaterMark', cloudPath: 'tar获取.jpg', fileContent: imageBuffer, operations: { rules: [{ fileid: '输出.jpg', rule: { mode: 3, type: 2, text: '水印文字', gravity: 'SouthEast' } }] } })
常见问题 ⚠️ 重要:wx.请求SubscribeMessage 调用规范
微信规定:订阅消息授权必须在用户点击事件的回调函数中同步触发,否则会失败。
正确做法:
// ❌ 错误:在异步回调中调用(云函数返回后才调用) a同步 submit() { awAIt wx.cloud.callFunction({ name: 'xxx' }) wx.请求SubscribeMessage({ tmplIds: [...] }) // 太晚了! }
// ✅ 正确:在点击事件第一时间同步调用 a同步 submit() { wx.请求SubscribeMessage({ tmplIds: [...] }) // 立即调用 awAIt wx.cloud.callFunction({ name: 'xxx' }) // 然后再做其他事 }
关键点:
必须在 bindtap 或 catchtap 回调的同步流程中调用 不能放在 设置Timeout、异步 awAIt、或任何回调链的后面 推荐在 onLoad 时预获取模板ID,存入 data,点击时直接从 data 读取 Q: 云函数上传失败 "ResourceNotFound.Function"
A: 需要先在微信开发者工具中手动创建云函数一次,然后再用 ci 上传更新
Q: 预览二维码失效
A: 尝试更换版本号 --uv "1.0.X",多次尝试
Q: 获取TempFileURL 返回 undefined
A: 检查 fileID 是否为云存储的 fileID,外部URL不需要转换
Q: cloud.init 报错
A: 确保在云函数中初始化,客户端使用 wx.cloud
Q: 云函数依赖安装失败
A: 使用 --rnpm 参数让云端安装依赖,或检查 package.json