借用开发者工具登录态
有些能力要以开发者的身份访问微信后台,浏览器里做不到。启动时加上 --devtools-login,wxa-runner 借本机微信开发者工具的登录态(开发者 ticket)代为请求, 和开发者工具里一样拿到真实结果:
wx.login的 code 和手机号:不加时也会成功,但 code 是假的,真实后端不认(见 setup 的默认返回)- 服务市场
wx.serviceMarket:不加时调用失败 - 插件页面:不加时不下载插件代码,打不开插件页面
bash
wxa-runner dev ./dist/dev/mp-weixin --devtools-login这个选项以前叫 --real-login(Playwright 的 wxaServerOptions 里是 realLogin),旧名暂时仍可用,启动时提示改用新名。
开启前的准备
- 当前登录的微信账号必须是
project.config.json里这个 appid 的开发者 - 新版开发者工具(Electron 版,如 2.02.2609231)不再把登录态明文保存在磁盘上,要向正在运行的开发者工具要: 启动时 wxa-runner 用开发者工具的命令行为项目开启自动化接口,开发者工具没在运行时会启动它, 项目窗口没开时会打开。需要先在开发者工具「设置 → 安全设置」里打开:
- 服务端口
- 允许获取工具登录票据
- 建议也打开「自动化接口打开工具时默认信任项目」,否则开发者工具会弹窗询问是否信任项目,点信任后才能继续
- 设置了「CLI 访问令牌」时,把它设成环境变量
WECHAT_DEVTOOLS_CLI_TOKEN
- 旧版开发者工具照旧读磁盘上保存的登录态,不需要上面的设置
- 登录态过期时,在开发者工具里重新登录即可,不用重启。也可以用环境变量
WECHAT_DEV_TICKET直接指定 ticket - 请求失败时调用返回失败并说明原因,不会退回模拟数据
- 开发者 ticket 很快过期,不适合 CI。CI 里请用 setup 的
mock和network.routes
服务市场
wx.serviceMarket.invokeService 也要借开发者工具的登录态。加了 --devtools-login 时,请求经开发服务器发给微信服务市场, 和开发者工具里一样拿到真实结果;没加时调用直接失败,提示加 --devtools-login。
- 项目的 appid 要已经在服务市场开通了这项服务,否则微信返回服务市场的错误码(如
9301010 consumption failure),invokeService照常失败,错误里带着 requestId - 只转发服务市场的请求,基础库发出的其他
operateWXData不会带上开发者的登录态发给微信 - 需要 3.7.1 及以上的基础库(用
--baselib指定)。3.7.0 及以前的基础库在浏览器里加载不了wx.serviceMarket所在的 SDK, 调用时报Fatal: unexpected loadSdkSubPackage case
插件
插件的代码不在项目里,和开发者工具一样要用开发者的登录态向微信下载。加了 --devtools-login 时,开发服务器下载 app.json 里声明的插件, wx.navigateTo、navigator 组件打开的 plugin://别名/页面 和真机一样显示插件页面,插件里的网络请求照常发出。
- 项目的 appid 要已经在小程序管理后台「设置 → 第三方设置 → 插件管理」里添加了插件,并经插件开发者通过,否则终端提示微信返回的原因
- 没加
--devtools-login时不下载插件,终端提示加上它;跳转插件页面时报page "…" is not found,小程序自己的页面照常可用 - 插件代码只放在内存里,同一个插件版本只下载一次,重启开发服务器后重新下载
- 暂不支持插件的自定义组件(
usingComponents里的plugin://)和业务代码里的requirePlugin;分包里声明的插件也还没有下载(#56) - 测试 API 的
navigateTo等路由方法不认plugin://地址,要从页面里点击或调用wx.navigateTo打开插件页面

