chrome.runtime.connectNative genera TypeError no capturado: undefined no es una función
Escribí una extensión de Chrome que llama a esta función connect () para conectarse a un programa local de C ++:
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");
}
Puedo ver la prueba1 en la consola, pero luego recibí el error
Uncaught TypeError: undefined is not a function
En la linea
port = chrome.runtime.connectNative('com.a.chrome_interface');
Mi archivo de manifiesto de extensiones está aquí:
{
"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
}
Mi com.a.chrome_interface.json se ve así:
{
"name": "com.a.chrome_interface",
"description": "Chrome Native Messaging API Example Host",
"path": "com.a.chrome_interface",
"type": "stdio",
"allowed_origins": [
"chrome-extension://abc.../"
]
}
y com.a.chrome_interface es un archivo C ++ ejecutable de Linux que genera un archivo, si se llama y este archivo nunca se crea. Puse ambos archivos en
/etc/opt/chrome/native-messaging-hosts/
Supongo que sí registré mi C ++ correctamente, pero también supongo que si lo registrara mal, debería obtener un error diferente. Si uso chrome.extension.connect (), el script se ejecuta y el mensaje de error desaparece pero no llegan datos en mi programa C ++.
Leí e intenté seguir las instrucciones sobrehttps://developer.chrome.com/extensions/messaging#native-messaging y busqué mucho en Google, pero pude averiguar la razón de mi problema.
Estoy usando Chromium 34 en Ubuntu 12.04.
Mientras escribo una extensión, ¿tengo que usar chrome.runtime.connectNative () o chrome.extension.connectNative ()?¿Cómo puedo conectar y enviar datos a mi programa C ++?