【发布时间】:2018-08-30 14:59:10
【问题描述】:
为 firefox(目前使用 Nightly 52)创建了一个 webextension,它使用本地消息在 Linux(Ubuntu 14、32x)上启动一个 java 程序。
webextension 加载、读取 .json 文件并读取指向启动 java 程序的脚本的路径。 JSON 和路径在我使用时是正确的:
var native = browser.runtime.connectNative("passwordmanager");
console.log("native.name" + native.name); //outputs passwordmanager.
native.onDisconnect.addListener(function(m) { console.log("Disconnected"); });
上面的代码打印了本机端口的名称,也打印了“断开连接”。所以我猜测本机应用程序由于某种原因而终止。
该应用程序现在只是骨架,它只是执行sysout 并读取sysin 并且如果直接通过shell 脚本启动它则可以正常工作。
在调试 webextension 时,我无法介入对 connectNative 的调用,因为它只是跳过该调用而不是介入。如此多的选择出了什么问题。
请让我知道是否有人能够创建基于 FF webextension 的本地消息传递应用程序以及任何关于我可能做错的指针。
谢谢
【问题讨论】:
-
有很多事情可能会出错,一个好的起点是查看浏览器控制台。 MDN 上的此页面详细介绍了如何处理您可能会在此处看到的一些消息:developer.mozilla.org/en-US/Add-ons/WebExtensions/…
-
你看到这个例子了吗?它帮助了我 - github.com/mdn/webextensions-examples/blob/master/… - 将您的
connectNative(...)行包装在try-catch中,以查看错误是这样的:try { chrome.runtime.connectNative(...) } catch (ex) { console.error('ex:', ex) }。如果您使用的是 Promise 版本,请坚持使用.catch(function(ex) { console.error('ex:', ex) } -
谢谢,BrowserConsole 没有任何错误。我也试过try/catch,没有例外。请注意,在 connectNative 之后,我有一个 port.name 并打印了本机应用程序的名称。现在我想知道应用程序是否正在以某种方式启动和退出...
-
@Noitidart,是的,这个例子对我有用。我的扩展仍然无法工作,我现在对如何调试它一无所知:(
-
射击我不知道我在想什么。实际上,我在使用 connectNative 处理错误/成功时也遇到了问题。我能得到的最接近的是:
var port = chrome.runtime.connectNative('..'); port.onDisconnect.addListener(blah);,断开回调触发,但没有给出原因。原因已记录到控制台。 @AndrewSwan - 你能提供任何帮助吗?
标签: firefox-addon firefox-addon-webextensions