为什么我得到Chrome本机消息“;找不到指定的本机消息传递主机&”;
Why am I getting Chrome Native Messaging "Specified native messaging host not found."?
我已经做了一段时间了,我想不通。我已经阅读了Chrome Native Messaging文档,但我不断收到来自扩展的"找不到指定的Native Messaging主机"错误。
注册表指向的清单:
{
"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);
请记住,我一连接Native()就收到错误。我在我的扩展清单中有"本机测试"权限。
注册表:
Subkey: HKEY_CURRENT_USER'Software'Google'Chrome'NativeMessagingHosts'com.fordcars.chromekeys
Value name: (Default)
Value: C:'Users'fordcars'Desktop'Development'ChromeKeys'Debug'nativeManifest.json
调试:我已经做了一些调试,发现如果我将connectNative nativeName从com.fordcar.chromekeys更改为其他任何名称,我仍然会得到相同的错误,所以要么是找不到注册表项,要么是我没有一个好的清单.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
即使不查看错误日志,如果您遵循错误消息的要点,也可能会注意到示例清单和您的清单之间的差异(即拼写错误的反斜杠)。
相关文章:
- '图片'没有用于本机道具的propType'RCTImageView.overlayColor&
- 在iOS和Android上使用React native时,我还能使用本机第三方lirbraries吗
- javascript函数访问ios本机功能
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- 在浏览器中检测本机或第三方PDF插件
- 将事件发送到javascript文档的react本机模块是否正确
- 将对应用内购买的支持构建为react本机代码
- 如何在Windows上用javascript构建本机应用程序
- 在视图中渲染多个按钮以编程方式进行本机反应
- 如何将chrome.tabCapture流从js传递到c++PNACL本机代码
- 为什么我得到Chrome本机消息“;找不到指定的本机消息传递主机&”;
- 为Chrome扩展指定本机消息主机
- 使用 JS-ctypes 将结构化数据传递给本机代码
- 从列表视图传递 React 本机状态
- 将数据从DOM传递到本机消息传递API
- javascript将字符串传递给本机objective-c
- Java和chrome扩展,本机消息
- 使用本机javascript传递事件侦听器参数
- 当“循环”时,不能在本机承诺之间传递数据;他们
- 用于调用外部应用程序的NPAPI替换(本机消息传递主机)无法工作