ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Truffle migirate deploy contract ESOCKETTIMEDOUT - How to fix

2022-05-01 12:00:27  阅读:414  来源: 互联网

标签:migirate node deploy .... fix modules js web3 provider


使用Truffle 来部署NTF项目的时候,很多时候,合约比较大,部署计较耗时,很容易出现超时。

人们常见的提问:

Am getting ESOCKETTIMEDOUT Error when I try to connect to Rinkeby or ropsten from my local truffle project. How do I resolve this?

ESOCKETTIMEDOUT ERROR while trying to deploy to Rinkeby

truffle migrate --network rinkeby Time Out # Error: PollingBlockTracker - encountered an error while attempting to update latest block:

truffle migrate timeout error

常见的报错:

Error: Unhandled error. ({
  code: -32603,
  message: 'ESOCKETTIMEDOUT',
  data: { originalError: { code: 'ESOCKETTIMEDOUT', connect: false } }
})
    at new NodeError (node:internal/errors:371:5)
    at Web3ProviderEngine.emit (node:events:509:17)
    at ..../node_modules/web3-provider-engine/index.js:54:14
    at afterRequest (..../node_modules/web3-provider-engine/index.js:148:21)
    at ..../node_modules/web3-provider-engine/index.js:174:21
    at ..../node_modules/web3-provider-engine/index.js:232:9
    at ..../node_modules/async/internal/once.js:12:16
    at replenish (..../node_modules/async/internal/eachOfLimit.js:61:25)
    at ..../node_modules/async/internal/eachOfLimit.js:71:9
    at eachLimit (..../node_modules/async/eachLimit.js:43:36)
    at ..../node_modules/async/internal/doLimit.js:9:16
    at end (..../node_modules/web3-provider-engine/index.js:211:5)
    at Request._callback (..../node_modules/web3-provider-engine/subproviders/rpc.js:36:21)  // check your callstack
    at self.callback (..../node_modules/request/request.js:185:22)
    at Request.emit (node:events:520:28)
    at ClientRequest.<anonymous> (..../node_modules/request/request.js:820:16)

另外一种报错:

/....../node_modules/eth-block-tracker/src/polling.js:53
        const newErr = new Error(`PollingBlockTracker - encountered an error while attempting to update latest block:\n${err.stack}`)
                       ^
Error: PollingBlockTracker - encountered an error while attempting to update latest block:
undefined
    at PollingBlockTracker._performSync (/......./node_modules/eth-block-tracker/src/polling.js:53:24)
    at runMicrotasks (<anonymous>)

还有一种报错:

Error: Unhandled error. ({
  code: -32603,
  message: 'ESOCKETTIMEDOUT',
  data: { originalError: { code: 'ESOCKETTIMEDOUT', connect: false } }
})
    at new NodeError (node:internal/errors:371:5)
    at Web3ProviderEngine.emit (node:events:509:17)
    at /..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/index.js:54:14
    at afterRequest (/..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/index.js:148:21)
    at /..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/index.js:174:21
    at /..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/index.js:232:9
    at /..../node_modules/async/internal/once.js:12:16
    at replenish (/..../node_modules/async/internal/eachOfLimit.js:61:25)
    at /..../node_modules/async/internal/eachOfLimit.js:71:9
    at eachLimit (/..../node_modules/async/eachLimit.js:43:36)
    at /..../node_modules/async/internal/doLimit.js:9:16
    at end (/..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/index.js:211:5)
    at Request._callback (/..../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/subproviders/rpc.js:36:21)   // check your callstack
    at self.callback (/..../node_modules/request/request.js:185:22)
    at Request.emit (node:events:520:28)
    at ClientRequest.<anonymous> (/..../node_modules/request/request.js:819:16)

常见的解决方案:
在 truffle-config.js中加入pollingIntervalnetworkCheckTimeouttimeoutBlocks

ccmtest: {
      provider: () => new HDWalletProvider(privateKey, `http://127.0.0.1:9934`),
      networkCheckTimeout: 10000000,
      pollingInterval:30000,      
      network_id: 1,       
      // gas: 5500000,        
      confirmations: 0,    
      timeoutBlocks: 2000,  
      skipDryRun: true     
    },

但 这里几个参数解决的报错是:

Error: There was a timeout while attempting to connect to the network.     
       Check to see that your provider is valid.
       If you have a slow internet connection, try configuring a longer timeout in your Truffle config. Use the networks[networkName].networkCheckTimeout property to do this.

有时候,并不能解决最上面遇到到的错误。

实际需要修改代码超时的地方是在web3-provider-engine 这个模块。在代码 web3-provider-engine/subproviders/rpc.jsxhr默认的超时时间是 timeout: 20000,把它改大。

xhr({
    uri: targetUrl,
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(newPayload),
    rejectUnauthorized: false,
    timeout: 20000,     //change this  config
  }, function(err, res, body) {

查看报错的堆栈
常见有几处地方:

  1. Truffle 使用的hdwallet-provider模块下有web3-provider-engine
    .../node_modules/@truffle/hdwallet-provider/node_modules/web3-provider-engine/subproviders/rpc.js
  2. 直接引用的web3-provider-engine
    .../node_modules/web3-provider-engine/subproviders/rpc.js:36:21

找到他们都把他们改掉。ESOCKETTIMEDOUT 问题就能解决。

参考:https://juejin.cn/post/6865562790778634253

标签:migirate,node,deploy,....,fix,modules,js,web3,provider
来源: https://www.cnblogs.com/softfair/p/Truffle-migirate-deploy-contract-ESOCKETTIMEDOUT.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有