微信小程序在本地编译的时候可以,真机预览不行,接口请求不通

374 阅读2分钟

这篇笔记📒主要记录: 微信小程序在本地编译的时候可以,真机预览不行的解决过程。在真机预览的时候,接口不通,我用的是uni-app 云函数请求数据,阿里云存储数据。

结论: 真机预览的时候不可以用本地云函数,一定要把本地云函数上传到云端,本地的schema.json也要上传

微信小程序在本地编译的时候可以,可以正常渲染列表数据,真机预览的时候不行

image.png

因为真机的时候没法看接口请求和控制台,于是打算用第三方工具,想着用vconsole

使用vconsole定位原因

安装vconsole,

npm i vconsole

在main.js中引入vconsole, 我用的是vue3版本

// #ifdef VUE3
import { createSSRApp } from "vue";
import VConsole from "vconsole"; // 引入 vConsole

export function createApp() {
  const app = createSSRApp(App);

  // 仅在开发环境使用 vConsole
  if (
    process.env.NODE_ENV === "development"
  ) {
    new VConsole(); // 初始化 vConsole
  }
  return {
    app,
  };
}
// #endif

安装完了小程序报错,TypeError: Cannot read property 'sendBeacon' of undefined image.png

H5可以正常显示vconsole image.png

vconsole提示未能正常获取当前用户信息,于是就想是不是小程序真机预览的时候没有登录用户,所以获取不到列表数据 image.png 先解决安装了vconsole,小程序报错的问题,看来小程序是用不了vconsole, 在main.js上面添加的代码里,加上process.env.UNI_PLATFORM === "h5", 这样只在H5里才有vconsole,小程序不报错了,

 // 仅在开发环境使用 vConsole
  if (
    process.env.NODE_ENV === "development" &&
    process.env.UNI_PLATFORM === "h5"
  ) {
    new VConsole(); // 初始化 vConsole
  }
根据H5 vconsole的提示错误,我们知道要先登录用户

真机预览的时候我们切换到登录页面,登录用的是uni-id-pages, 结果如下:

image.png

提示无法连接uniCloud本地调试服务,请检查当前客户端...

突然想到是不是我用的是, uniCloud本地云函数所以不行,切换到云端云函数,

image.png

发现本地编译都不行了,(感觉原因找到了,本地都不行),提示

Error: Invalid uni-id config file

image.png

根据报错,我们上传关于用户模块配置的uni-id文件夹下的config.json文件(点击文件夹右键有上传命令) image.png

竟然提示公共模块uni-config-center被云端函数依赖,正在更新相关云端云函数..., 说明这个上传绝对是对的,再次编译,发现提示缺少集合对应的schema,

image.png

上传所有的表的schema, 有的表上传时候提示要新建一些表,比如uni-id-permissions image.png

image.png

再次编译发现可以了,真机预览也可以了

image.png

结论:
  1. 真机预览一定要用云端云函数模式
  2. 一定要把用到的本地云函数,本地数据库schema.json 都上传到云端,最好都上传,不然可能搞混遗漏
  3. vconsole小程序不生效,H5可以