为什么我的 chrome 分机收不到 Node.JS 本机应用程序的任何消息?
Why do I not receive any message from Node.JS Native App to my chrome extension?
我是 chrome 本机消息传递的新手,我想在我的 chrome 扩展程序和本机应用程序之间建立连接。澄清一下,我想从我的分机接收消息,处理它们,然后发回其他消息。但现在我试图从一方面来做。阅读了有关它的所有必要信息后,我遇到了一个问题,即我的分机保持沉默并且不记录收到的(可能)消息。
popup.js:
let port = chrome.runtime.connectNative("com.defus.nodejs");
console.log("Waiting for response...");
port.onMessage.addListener((response) => {
console.log("Received: " + response);
});
manifest.json(应用):
{
"name": "com.defus.nodejs",
"description": "Run Node.JS",
"path": "./node.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://myid/"
]
}
node.bat:
@echo off
node ./index.js
index.js (nodejs): — (I tried using the links, but some of them, such as https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging$compare?locale=en-US&to=1595872&from=1593969 来自评论被破坏...)
const header = Buffer.alloc(4);
let message = "something\n";
header.writeUInt32LE(message.length, 0);
process.stdout.write(header);
process.stdout.write(message);
我已经在 regedit 中注册了我的应用程序 Computer\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.defus.nodejs
,如果我只是启动一个随机应用程序,一切正常。
我试图使用绝对路径,发送 json 对象(和字符串化对象)和其他从 nodejs 应用程序获取消息的各种实现,但没有解决方案没有帮助。我只是收到“等待回复...”,仅此而已。谁能提供简单的例子来说明如何做我需要的事情。
经过一些其他搜索,我似乎找到了解决问题的方法。这是我的步骤:
- 感谢 Hüseyin Yağlı's 的回答,我意识到 .bat 文件的名称和命令不应该相同,这可能会导致脚本循环。
- 消息必须 JSON 字符串化。
如果不遵守上述规则之一——本机应用程序将无法运行。因此,我将 node.bat
重命名为 index.bat
并尝试发送 let message = JSON.stringify({ message: "something" });
- 它有效。
我是 chrome 本机消息传递的新手,我想在我的 chrome 扩展程序和本机应用程序之间建立连接。澄清一下,我想从我的分机接收消息,处理它们,然后发回其他消息。但现在我试图从一方面来做。阅读了有关它的所有必要信息后,我遇到了一个问题,即我的分机保持沉默并且不记录收到的(可能)消息。
popup.js:
let port = chrome.runtime.connectNative("com.defus.nodejs");
console.log("Waiting for response...");
port.onMessage.addListener((response) => {
console.log("Received: " + response);
});
manifest.json(应用):
{
"name": "com.defus.nodejs",
"description": "Run Node.JS",
"path": "./node.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://myid/"
]
}
node.bat:
@echo off
node ./index.js
index.js (nodejs): —
const header = Buffer.alloc(4);
let message = "something\n";
header.writeUInt32LE(message.length, 0);
process.stdout.write(header);
process.stdout.write(message);
我已经在 regedit 中注册了我的应用程序 Computer\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.defus.nodejs
,如果我只是启动一个随机应用程序,一切正常。
我试图使用绝对路径,发送 json 对象(和字符串化对象)和其他从 nodejs 应用程序获取消息的各种实现,但没有解决方案没有帮助。我只是收到“等待回复...”,仅此而已。谁能提供简单的例子来说明如何做我需要的事情。
经过一些其他搜索,我似乎找到了解决问题的方法。这是我的步骤:
- 感谢 Hüseyin Yağlı's 的回答,我意识到 .bat 文件的名称和命令不应该相同,这可能会导致脚本循环。
- 消息必须 JSON 字符串化。
如果不遵守上述规则之一——本机应用程序将无法运行。因此,我将 node.bat
重命名为 index.bat
并尝试发送 let message = JSON.stringify({ message: "something" });
- 它有效。