chrome.runtime.connectNative генерирует Uncaught TypeError: undefined не является функцией
Я написал расширение chrome, которое вызывает эту функцию connect () для подключения к локальной программе на 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");
}
Я вижу test1 в консоли, но потом я получил ошибку
Uncaught TypeError: undefined is not a function
в соответствии
port = chrome.runtime.connectNative('com.a.chrome_interface');
Файл манифеста моих расширений находится здесь:
{
"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
}
Мой com.a.chrome_interface.json выглядит так:
{
"name": "com.a.chrome_interface",
"description": "Chrome Native Messaging API Example Host",
"path": "com.a.chrome_interface",
"type": "stdio",
"allowed_origins": [
"chrome-extension://abc.../"
]
}
и com.a.chrome_interface - исполняемый файл C ++ linux, который генерирует файл, если он вызывается и этот файл никогда не создается. Я положил оба файла в
/etc/opt/chrome/native-messaging-hosts/
Так что, я думаю, я правильно зарегистрировал свой C ++, но я также думаю, что если я зарегистрирую его неправильно, я получу другую ошибку. Если я использую chrome.extension.connect (), сценарий запускается через него, и сообщение об ошибке исчезает, но в мою программу на C ++ не поступает никаких данных.
Я прочитал и стараюсь следовать инструкциям наhttps://developer.chrome.com/extensions/messaging#native-messaging и много гуглил, но я смог выяснить причину своей проблемы.
Я использую Chromium 34 на Ubuntu 12.04.
Когда я пишу расширение, мне нужно использовать chrome.runtime.connectNative () или chrome.extension.connectNative ()?Как я могу подключиться и отправить данные в мою программу C ++?