跳到主要内容

在微信小程序中使用 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 不与非标准平台耦合,暂不支持在小程序中上传附件。

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