chrome.runtime.connectNative gera UnAught TypeError: undefined não é uma função
Eu escrevi uma extensão do Chrome que chama essa função connect () para conectar-se a um programa C ++ local:
function connect() {
console.log("test1");
//port = chrome.extension.connectNative('com.a.chrome_interface');
port = chrome.runtime.connectNative('com.a.chrome_interface');
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
console.log("test5");
}
Consigo ver o test1 no console, mas depois recebi o erro
Uncaught TypeError: undefined is not a function
na linha
port = chrome.runtime.connectNative('com.a.chrome_interface');
Meu arquivo de manifesto de extensões está aqui:
{
"name": "CPP_Connect",
"version": "1.0",
"description": "Send data to CPP program",
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["contentscript.js"]
}
],
"permissions": ["contextMenus", "tabs", "nativeMessaging", "<all_urls>"],
"manifest_version": 2
}
Meu com.a.chrome_interface.json fica assim:
{
"name": "com.a.chrome_interface",
"description": "Chrome Native Messaging API Example Host",
"path": "com.a.chrome_interface",
"type": "stdio",
"allowed_origins": [
"chrome-extension://abc.../"
]
}
e com.a.chrome_interface é um arquivo C ++ executável em linux que gera um arquivo, se for chamado e esse arquivo nunca for criado. Eu coloquei os dois arquivos
/etc/opt/chrome/native-messaging-hosts/
Então, eu acho que registrei meu C ++ corretamente, mas também acho que, se eu registrasse errado, deveria receber um erro diferente. Se eu usar chrome.extension.connect (), o script será executado e a mensagem de erro desaparecerá, mas nenhum dado chegará ao meu programa C ++.
Eu li e tentei seguir as instruções emhttps://developer.chrome.com/extensions/messaging#native-messaging e pesquisei bastante no Google, mas pude descobrir a razão do meu problema.
Estou usando o Chromium 34 no Ubuntu 12.04.
Enquanto escrevo uma extensão, tenho que usar chrome.runtime.connectNative () ou chrome.extension.connectNative ()?Como posso conectar e enviar dados para o meu programa C ++?