【发布时间】: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 functionAPI 预期的正常功能。您可以定义一个单独的异步函数并从 API 回调中调用它。
标签: reactjs google-chrome-extension google-chrome-devtools blockchain web3js