【问题标题】:Getting error while performing web3 transaction from chrome extention从 chrome 扩展执行 web3 事务时出错
【发布时间】:2018-05-06 09:42:39
【问题描述】:

我可以使用 chrome 扩展从块链中检索数据,但是从 chrome 扩展更新某些块时出现错误。

使用以下代码执行交易。

chrome.extension.onRequest.addListener(async function(request, sender, sendResponse) {
if (request.method === "getHTML") {
  console.log("Hello From react 2");
  console.log(request.data);
  const ads = await userAbi.methods.setSpecificUserClickStatistics(request.data).send({from: "some address"});
  console.log(ads);
}
});

运行console.log(web3.currentProvider)连接Web3时成功输出。

   HttpProvider {host: "https://rinkeby.infura.io/<specific token>", timeout: 0, connected: false, headers: undefined}
connected:true
headers:undefined
host:"https://rinkeby.infura.io/<specific token>"
timeout:0
event.js:24170 Hello From react 2

我得到的错误:-

event.js:60196 POST https://rinkeby.infura.io/(specific token) 405 ()
HttpProvider.send @ event.js:60196
RequestManager.send @ event.js:50121
sendRequest @ event.js:8961
(anonymous) @ event.js:8978
sendTxCallback @ event.js:8885
(anonymous) @ event.js:50136
request.onreadystatechange @ event.js:60186
XMLHttpRequest.send (async)
HttpProvider.send @ event.js:60196
RequestManager.send @ event.js:50121
sendRequest @ event.js:8961
send @ event.js:8982
send @ event.js:8973
_executeMethod @ event.js:56098
(anonymous) @ event.js:24172
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
messageListener @ extensions::messaging:240
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392
event.js:49362 Uncaught (in promise) Error: Invalid JSON RPC response: ""
    at Object.InvalidResponse (event.js:49362)
    at XMLHttpRequest.request.onreadystatechange (event.js:60182)
InvalidResponse @ event.js:49362
request.onreadystatechange @ event.js:60182
async function (async)
(anonymous) @ event.js:24168
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
messageListener @ extensions::messaging:240
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392

任何帮助都会有很大帮助。

【问题讨论】:

  • Chrome 扩展 API 不支持 Promise,因此您无法通过 async function API 预期的正常功能。您可以定义一个单独的异步函数并从 API 回调中调用它。

标签: reactjs google-chrome-extension google-chrome-devtools blockchain web3js


【解决方案1】:

你可以试试这些吗:

  1. 尝试检查 testrpc 是否正在运行或已停止。
  2. 另外,你能不能尝试使用http而不是https

其中一个可能会从我的经验中解决问题。第一个当然是用于运行 envt,如果是第二个,它有时不允许您连接到节点。

希望这会有所帮助。祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2021-08-13
    • 2012-05-09
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多