如何在 Electron 中安装 MetaMask 扩展?

Posted

技术标签:

【中文标题】如何在 Electron 中安装 MetaMask 扩展?【英文标题】:How can I install the MetaMask extension in Electron? 【发布时间】:2018-01-10 16:33:19 【问题描述】:

我已经成功安装了来自https://github.com/aragon/metamask-plugin的扩展

当 Electron 应用程序启动时,我可以看到 MetaMask 插件已加载,但不能用它做太多事情。有一些错误:

Uncaught TypeError: global._runtime.onConnect is not a function
    at Object.connect (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:139)
    at setupStreams (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:216)
    at Object.<anonymous> (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:187)
    at Object.3../lib/extension (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:265)
    at s (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1)
    at e (blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1)
    at blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1
connect @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:139
setupStreams @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:216
(anonymous) @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:187
3../lib/extension @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:265
s @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1
e @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1
(anonymous) @ blob:file:///c13a5138-3758-47ae-a481-a163d7aa6a19:1

App.js:49 Uncaught TypeError: window._setupMetaMaskPageStream is not a function
    at onMetaMaskLoad (http://localhost:1212/dist/renderer.dev.js:1081:14)
    at onMetaMaskLoad (http://localhost:1212/dist/renderer.dev.js:19790:30)
    at Object.ReactErrorUtils.invokeGuardedCallback (webpack:///./node_modules/react-dom/lib/ReactErrorUtils.js?:69:16)
    at executeDispatch (webpack:///./node_modules/react-dom/lib/EventPluginUtils.js?:85:21)
    at Object.executeDispatchesInOrder (webpack:///./node_modules/react-dom/lib/EventPluginUtils.js?:108:5)
    at executeDispatchesAndRelease (webpack:///./node_modules/react-dom/lib/EventPluginHub.js?:43:22)
    at executeDispatchesAndReleaseTopLevel (webpack:///./node_modules/react-dom/lib/EventPluginHub.js?:54:10)
    at Array.forEach (native)
    at forEachAccumulated (webpack:///./node_modules/react-dom/lib/forEachAccumulated.js?:24:9)
    at Object.processEventQueue (webpack:///./node_modules/react-dom/lib/EventPluginHub.js?:254:7)

【问题讨论】:

嘿!我有问题。你弄明白了吗?如果是这样,请您发布解决方案。谢谢! 类似错误,但我使用的是 chrome 商店的插件。 【参考方案1】:

这两个错误都是函数范围绑定错误。 this.setupMetaMaskPageStreamthis._runtime.onConnect 函数是从 MetaMaskController 中的其他函数调用的,但它们似乎在没有保留 MetaMask 控制器范围的情况下被调用,默认为全局上下文(因此 window._setupMetaMaskPageStream)。

没有看到你的代码,很难知道你是如何在错误的上下文中调用这些方法的,但它可能涉及bindcall 函数。

【讨论】:

以上是关于如何在 Electron 中安装 MetaMask 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

metamask api 请求 一般操作

如何在docker中运行electron

如何在带有 npm 的 PowerShell 中使用“@”

如何用Electron解决Sqlite3的这个错误?

如何在 apache2 tomcat6 中安装 ffmpeg 或在 ubuntu 中安装 xampp?

如何在python2.7中安装MySQLdb 在virtualenv中安装