为什么我要获取Chrome本地消息传递“未find指定的本地消息传递主机”?

我一直在这个工作了一段时间,我不明白这一点。 我已经阅读了Chrome原生消息传递文档 ,但是我一直在收到“未find指定的本地消息传递主机”。 来自扩展名的错误。

登记处指出的清单:

{ "name": "com.fordcars.chromekeys", "description": "ChromeKeys description", "path": "C:\Users\fordcars\Desktop\Development\ChromeKeys\Debug\ChromeKeys.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://pdkakljppghagmaoijbpicogfdbodpbc" ] } 

扩展脚本:

 // Event page var nativeName = "com.fordcars.chromekeys"; var nativePort = chrome.runtime.connectNative(nativeName); function nativeDataReceived(data) { // Not used } function nativeDisconnected() { console.log("Native program disconnected. Error: " + chrome.runtime.lastError.message); } nativePort.onMessage.addListener(nativeDataReceived); nativePort.onDisconnect.addListener(nativeDisconnected); 

请记住,只要connectNative()就会出错。 我的扩展清单中有“nativeMessaging”权限。

注册地:

 Subkey: HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.fordcars.chromekeys Value name: (Default) Value: C:\Users\fordcars\Desktop\Development\ChromeKeys\Debug\nativeManifest.json 

debugging:我已经做了一些debugging,并发现如果我将com.fordcars.chromekeys中的connectNative nativeName 更改为其他任何内容,我仍然得到相同的错误,所以它不是findregistry项或/和我不有一个很好的manifest.json

谢谢!

反斜杠是JSON中的转义字符。 您必须在清单中使用两个反斜杠作为路径分隔符:

 // BAD: "path": "C:\Users\fordcars\Desktop\Development\ChromeKeys\Debug\ChromeKeys.exe", // GOOD: "path": "C:\\Users\\fordcars\\Desktop\\Development\\ChromeKeys\\Debug\\ChromeKeys.exe", 

我强烈建议学习如何调试,如调试本地消息所述 ,因为如果你这样做,那么你会看到更详细的错误消息:

找到清单,但不是本地消息传递主机com.fordcars.chromekeys的二进制文件。 清单中指定的主机路径:C:UsersordcarsDesktopDevelopmentChromeKeysDebugChromeKeys.exe

即使没有查看错误日志,如果您已经按照错误消息中的项目符号点,您可能已经注意到样本清单和您的错误(即拼写错误的反斜杠)之间的差异。