MetaMask - RPC 错误:无法设置未定义的属性(设置“加载默认值”)错误

Posted

技术标签:

【中文标题】MetaMask - RPC 错误:无法设置未定义的属性(设置“加载默认值”)错误【英文标题】:MetaMask - RPC Error: Cannot set properties of undefined (setting 'loadingDefaults') error 【发布时间】:2022-01-21 01:53:50 【问题描述】:

我正在构建一个质押功能并在授予访问我的令牌的权限后遇到以下错误:

“MetaMask - RPC 错误:无法设置未定义的属性(设置 'loadingDefaults')”

Staking 功能 Solidity 合约:

    // Staking function
    function depositTokens(uint _amount) public 
        require(_amount > 0, 'Amount has to be > 0');
    // Transfer tether tokens to this contract
    tether.transferFrom(msg.sender, address(this), _amount);

    // Update Staking balance
    stakingBalance[msg.sender] = stakingBalance[msg.sender] + _amount;

    if(!hasStaked[msg.sender]) 
        stakers.push(msg.sender);
    

    // Update Staking balance
    isStaking[msg.sender] = true;
    hasStaked[msg.sender] = true;
    
    

质押前端

stakeTokens = (amount) => 
this.setState(loading: true )
this.state.tether.methods.approve(this.state.deBank._address, amount).send(from: this.state.account).on('transactionHash', (hash) => 
  this.state.deBank.methods.depositTokens(amount).send(from: this.state.account).on('transactionHash', (hash) => 
    this.setState(loading:false)
  )
) 

奇怪的是,在 25-30% 的情况下,我进入了第二个批准步骤并且交易通过了。

有人知道是什么原因造成的吗?

【问题讨论】:

【参考方案1】:

在与您学习同一课程时遇到同样的问题,不妨尝试使用节点 10 并重新部署所有内容。

让我知道这是否有效。

【讨论】:

谢谢@Nagasaki,我设法通过卸载/重新安装项目中的所有 node.js 依赖项,删除 .json 合约 abi 文件,然后重新部署 app -truffle compile 和 truffle 来解决这个问题迁移。 对我不起作用 - 还有其他建议吗?【参考方案2】:

尝试以下方法,它对我有用:

    在 Metamask 中转到您的测试帐户,设置 > 高级设置,然后点击“重置帐户”。 清除浏览器的缓存。

警告:确保您在 Metamask 中的测试帐户下。

【讨论】:

【参考方案3】:

重新安装模块和重新编译没有做任何事情,但是在我将函数更改为 async await 语法后它解决了:

stakeTokens = async (amount) => 
  this.setState( loading: true );

  await this.state.tether.methods
    .approve(this.state.decentralBank._address, amount)
    .send( from: this.state.account );

  await this.state.decentralBank.methods
    .depositTokens(amount)
    .send( from: this.state.account );

  this.setState( loading: false );

;

它现在应该提示 Metamask 两次。批准第 1 名,存入代币第 2 名。

此错误在 Metamask 的 Github 上有一个未解决的问题:https://github.com/MetaMask/metamask-extension/issues/13197

【讨论】:

【参考方案4】:

我已尝试节点版本 12.18.0 然后成功运行

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于MetaMask - RPC 错误:无法设置未定义的属性(设置“加载默认值”)错误的主要内容,如果未能解决你的问题,请参考以下文章

MetaMask - RPC 错误:错误:MetaMask Tx 签名:用户拒绝交易签名

MetaMask - RPC 错误:权限请求已经挂起,在 Angular 10 中

我在 Metamask 上遇到错误“未检查的 runtime.lastError:无法建立连接”

未捕获的类型错误:无法调用 jquery jsonrpc 客户端中未定义的方法“设置”

无法从另一台机器连接到 Geth 节点 RPC

未捕获的错误:无效地址 web3.currentProvider MetaMask