我试图在ClojureScript中使用npm的@ walletconnect / web3-provider包,当我调用函数时出现错误: TypeError:$ jscomp $ generator $ this.send不是函数
这是使用的JavaScript代码,问题出在第四行:return this.send(payload);
:
class WalletConnectProvider extends ProviderEngine {
request(payload) {
return tslib_1.__awaiter(this,void 0,function* () {
return this.send(payload);
});
}
send(payload,callback) {
return tslib_1.__awaiter(this,function* () {
if (typeof payload === "string") {
const method = payload;
let params = callback;
if (method === "personal_sign") {
params = utils_1.parsePersonalSign(params);
}
return this.sendAsyncPromise(method,params);
}
payload = Object.assign({ id: utils_1.payloadId(),jsonrpc: "2.0" },payload);
if (payload.method === "personal_sign") {
payload.params = utils_1.parsePersonalSign(payload.params);
}
if (callback) {
this.sendAsync(payload,callback);
return;
}
return this.sendAsyncPromise(payload.method,payload.params);
});
}
这是ClojureScript代码,当我调用(.getaccounts (.-eth web3))
(ns woodenstaking-ui.components.connect-btn
(:require [re-frame.core :as rf]
["web3" :as web3-js]
["web3modal" :default web3-modal]
["@walletconnect/web3-provider" :default wallet-connect-provider]
["fortmatic" :as fortmatic]
[cljs.core.async :refer [go]]
[cljs.core.async.interop :refer-macros [<p!]]
(def web3modal
(new web3-modal #js {:cacheProvider false,:providerOptions #js
{:walletconnect #js
{:package wallet-connect-provider,:options #js {:infuraId infura-id}}
:fortmatic #js
{:package fortmatic
:options #js {:key fortmatic-key}}}}))
(defn open-modal
[]
(go
(let [provider (<p! (.connect web3modal))
web3 (new web3-js provider)
account (<p! (.getaccounts (.-eth web3)))])))
此代码适用于MetaMask和Fortmatic web3提供程序,仅适用于WalletConnect失败。调用任何智能合约方法时,使用WalletConnect都会遇到相同的错误。