import { ethers } from 'ethers'; // 自定义Provider,使用uni.request替代原生fetch class UniAppProvider extends ethers.providers.JsonRpcProvider { async send(method, params) { const payload = { method: method, params: params, id: Math.floor(Math.random() * 1000000), jsonrpc: "2.0" }; return new Promise((resolve, reject) => { uni.request({ url: this.connection.url, data: JSON.stringify(payload), method: 'POST', header: { 'content-type': 'application/json' }, success: (res) => { if (res.statusCode !== 200) { reject(new Error(`HTTP Error: ${res.statusCode}`)); return; } if (res.data.error) { reject(new Error(res.data.error.message || JSON.stringify(res.data.error))); return; } resolve(res.data.result); }, fail: (err) => { reject(new Error(err.errMsg || 'Request failed')); } }); }); } }