extension developer chrome apps javascript google-chrome-extension chrome-native-messaging
nativeMessaging.zip

javascript - developer - Extensión de Chrome NativeMessaging ''connectNative'' undefined



developer chrome apps (1)

Estoy tratando de implementar una extensión de Chrome utilizando runtime.connectNative y postMessage. Estoy siguiendo la documentación de Chrome , descargué el ejemplo de mensajería nativa que estoy tratando de ejecutar sin ningún cambio, mientras que el código para la aplicación host nativa se puede encontrar aquí .

Sin embargo, recibo el error: TypeError no detectado: no se puede leer la propiedad ''connectNative'' de undefined.

El error se desencadena desde el archivo de extensión de JavaScript, en esta línea:
port = chrome.runtime.connectNative (hostName);

mientras la extensión se carga desde el manifiesto de la siguiente manera:

"app": { "launch": { "local_path": "main.html" } }

¿Alguna idea de cómo resolver el problema, por favor?

Chrome versión 34, probado en Windows 7, 8.1


El problema inmediato es que no está ejecutando el código de muestra correctamente. El problema más grande es que Google no ha proporcionado documentación exhaustiva sobre cómo usar este código de muestra.

El ejemplo de Native Messaging al que hizo referencia solo vincula al código de muestra para la extensión de Chrome. Después de buscar, pude encontrar un código de muestra relacionado para la aplicación de host de mensajería nativa. Para obtener el código de muestra para la extensión de Chrome y la aplicación de host de mensajería nativa juntos, querrá descargar nativeMessaging.zip . En ese archivo zip también encontrará algunas instrucciones breves sobre cómo instalar el host de mensajería nativa en Windows, Linux y Mac OS X. Le diré ahora que las instrucciones están incompletas, ya que no le dicen cómo instalar la extensión de Chrome Además, los scripts para instalar y desinstalar el host de mensajería nativo no funcionan como están en OS X. Consulte a continuación mis instrucciones de instalación y scripts corregidos.

Cómo instalar la extensión de muestra y la aplicación de host nativa

  1. Descargue y descomprima el archivo nativeMessaging.zip.
  2. Instala la extensión de Chrome
    1. En Chrome ingrese chrome://extensions/ en la barra de direcciones
    2. Haga clic en el botón "Cargar extensión no empaquetada ..."
    3. Navegue hasta el directorio descomprimido nativeMessaging y seleccione el directorio de la app para importar
  3. Instalar la aplicación de host de mensajería nativa
    1. Para OS X y Linux necesitarás agregar permiso de ejecución a algunos de los archivos. Ejecute el comando: chmod a+rx nativeMessaging/host/install_host.sh nativeMessaging/host/native-messaging-example-host nativeMessaging/host/uninstall_host.sh
    2. Para OS X, deberá corregir algunos errores en nativeMessaging/host/install_host.sh y nativeMessaging/host/uninstall_host.sh . Vea a continuación los scripts corregidos.
    3. Para OS X, Linux y Windows, siga las instrucciones en nativeMessaging/README.txt
  4. Ejecute la extensión de Chrome
    1. En Chrome, ingresa chrome://apps/ en la barra de direcciones
    2. Haga clic en el icono de la aplicación Ejemplo de mensajería nativa
    3. Después de cargar la aplicación, debe ver un solo botón llamado "Conectar". Haga clic en ese botón y verá que la aplicación de host de mensajería nativa se inicia automáticamente.

Se nativeMessaging/host/install_host.sh

#!/bin/sh # Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. set -e DIR="$( cd "$( dirname "$0" )" && pwd )" if [ $(uname -s) == ''Darwin'' ]; then if [ "$(whoami)" == "root" ]; then TARGET_DIR="/Library/Google/Chrome/NativeMessagingHosts" else TARGET_DIR="$HOME/Library/Application Support/Google/Chrome/NativeMessagingHosts" fi else if [ "$(whoami)" == "root" ]; then TARGET_DIR="/etc/opt/chrome/native-messaging-hosts" else TARGET_DIR="$HOME/.config/google-chrome/NativeMessagingHosts" fi fi HOST_NAME=com.google.chrome.example.echo # Create directory to store native messaging host. mkdir -p "$TARGET_DIR" # Copy native messaging host manifest. cp "$DIR/$HOST_NAME.json" "$TARGET_DIR" # Update host path in the manifest. HOST_PATH="$DIR/native-messaging-example-host" ESCAPED_HOST_PATH=${HOST_PATH///////} sed -i -e "s/HOST_PATH/$ESCAPED_HOST_PATH/" "$TARGET_DIR/$HOST_NAME.json" # Set permissions for the manifest so that all users can read it. chmod o+r "$TARGET_DIR/$HOST_NAME.json" echo Native messaging host $HOST_NAME has been installed.

Se nativeMessaging/host/uninstall_host.sh

#!/bin/sh # Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. set -e if [ $(uname -s) == ''Darwin'' ]; then if [ "$(whoami)" == "root" ]; then TARGET_DIR="/Library/Google/Chrome/NativeMessagingHosts" else TARGET_DIR="$HOME/Library/Application Support/Google/Chrome/NativeMessagingHosts" fi else if [ "$(whoami)" == "root" ]; then TARGET_DIR="/etc/opt/chrome/native-messaging-hosts" else TARGET_DIR="$HOME/.config/google-chrome/NativeMessagingHosts" fi fi HOST_NAME=com.google.chrome.example.echo rm "$TARGET_DIR/com.google.chrome.example.echo.json" echo Native messaging host $HOST_NAME has been uninstalled.