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 ++?

Respuestas a la pregunta(1)

Su respuesta a la pregunta