Skip to main content

在微信小程序中使用 Javascript SDK

当你在微信小程序中使用维格表 Javascript SDK 时,通常会遇到 adapter is not a function 的报错:

请求发生错误: {success: false, code: 400, message: "adapter is not a function"}

这是因为 JS SDK 使用 axios 作为网络请求库,在微信小程序环境中,请求需要使用 wx.request,因此 SDK 无法直接在微信小程序中使用。

不过 axios 提供了 adapter 接口,axios-miniprogram-adapter 是 axios 在小程序中的请求适配器,它可以让 SDK 正常工作。

安装 axios-miniprogram-adapter#

yarn add axios-miniprogram-adapter

引入适配器#

在初始化 Vika 实例时,指定 adapter 为引入的 axios-miniprogram-adapter

import mpAdapter from 'axios-miniprogram-adapter';
const vika = new Vika({  token: 'your_api_token',  adapter: mpAdapter,});
vika.datasheet('dstxJZ2xZXJnXScfni').records.query().then(resp => {  console.log(resp.data?.records)})

参考代码#

下面是使用 taro 框架生成的小程序基础代码,在程序加载后,可以看到控制台打印出获取到的记录数据。

import { Component } from 'react'import { View, Text, Button } from '@tarojs/components'import Vika from '@vikadata/vika';import Taro from '@tarojs/taro';import mpAdapter from 'axios-miniprogram-adapter';import './index.less';

export default class Index extends Component {
  componentWillMount() { }
  componentDidMount() {    const vika = new Vika({      token: 'your_api_token',      adapter: mpAdapter,    });    vika.datasheet('dstxJZ2xZXJnXScxxx').records.query().then(resp => {      console.log(resp.data?.records)    })  }
  componentWillUnmount() { }
  componentDidShow() { }
  componentDidHide() { }  render() {    return (      <View className='index'>        <Text>Hello Vika!</Text>      </View>    )  }}

如何上传附件?#

因为微信小程序的限制,FormData 对象不可用。为了保证 SDK 不与非标准平台耦合,暂不支持在小程序中上传附件。

你可以参考社区的解决方案,自行封装请求实现。