0

我的 Dapps 在信任钱包浏览器中运行良好,但在 Thundercore 浏览器中无法运行我该怎么办,有什么建议吗?

我与区块链连接的角度服务代码

import { Injectable } from '@angular/core';
import * as Web3 from 'web3';
import * as TruffleContract from 'truffle-contract';

declare let require: any;
declare let window: any;

let tokenAbi = require('../../../build/contracts/Transfer.json');

@Injectable({
  providedIn: 'root'
})

export class EthcontractService {
  private web3Provider: null;
  private contracts: {};
  web3:any;


  constructor() {
    if (typeof window.ethereum === 'undefined') {
      alert('Non-Ethereum browser detected. Install MetaMask');
    } else {
      if (typeof window.web3 !== 'undefined') {
        this.web3Provider = window.web3.currentProvider;
      } else {
        this.web3Provider = new Web3.providers.HttpProvider('http://localhost:8545');
      }
      console.log('transfer.service :: constructor :: window.ethereum');
      window.web3 = new Web3(window.ethereum);
      console.log('transfer.service :: constructor :: this.web3');
      console.log(this.web3Provider);
      this.enableMetaMaskAccount();
    }
  }
   private async enableMetaMaskAccount(): Promise<any> {
    let enable = false;
    await new Promise((resolve, reject) => {
      enable = window.ethereum.enable();
    });
    return Promise.resolve(enable);
  }


  getAccountInfo() {
    return new Promise((resolve, reject) => {
      window.web3.eth.getCoinbase(function(err, account) {

        if(err === null) {
          window.web3.eth.getBalance(account, function(err, balance) {0
            if(err === null) {
              return resolve({fromAccount: account, balance:(window.web3.fromWei(balance, "ether")).toNumber()});
            } else {
            console.log(err)
              return reject({fromAccount: "error", balance:0});
            }
          });
        }
      });
    });
  }

  transferTT(
    _from,
    _to,
    _amt,
  ) {
    let that = this;

    return new Promise((resolve, reject) => {
      let paymentContract = TruffleContract(tokenAbi);
      paymentContract.setProvider(that.web3Provider);

      paymentContract.deployed().then(function(instance) {
          return instance.pay(
            _to,
            {
              from:_from,
              value:window.web3.toWei(_amt, "ether")
            });
        }).then(function(status) {
          if(status) {
            return resolve({status:true});
          }
        }).catch(function(error){
          console.log(error);

          return reject("Error in transferEther service call");
        });
    });
  }
}

代码在信任钱包和元掩码扩展中运行良好,但在 Thundercore 钱包浏览器中运行良好,你能看看这个并给我一个解决方案。

4

1 回答 1

0

我通过将函数替换getCoinbase()getAccounts()

而已

于 2021-03-28T15:12:52.777 回答