Eri*_*nig 4 javascript zeromq node.js electron
试图让ZMQ 节点绑定与 Electron 一起工作,我非常头疼,尤其是在 Windows 上。我正在使用 Windows 7 和 Ubuntu 16.04,它们都有两个不同的问题。
在 Windows 上,当我尝试执行时出现错误 require('zmq')
C:\vueelectron\app\node_modules\bindings\bindings.js:91 Uncaught Error: Could not locate the bindings file. Tried:
? C:\vueelectron\app\node_modules\zmq\build\zmq.node
? C:\vueelectron\app\node_modules\zmq\build\Debug\zmq.node
? C:\vueelectron\app\node_modules\zmq\build\Release\zmq.node
? C:\vueelectron\app\node_modules\zmq\out\Debug\zmq.node
? C:\vueelectron\app\node_modules\zmq\Debug\zmq.node
? C:\vueelectron\app\node_modules\zmq\out\Release\zmq.node
? C:\vueelectron\app\node_modules\zmq\Release\zmq.node
? C:\vueelectron\app\node_modules\zmq\build\default\zmq.node
? C:\vueelectron\app\node_modules\zmq\compiled\6.1.0\win32\x64\zmq.node
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 VS 2013 和 2015 进行编译,多次重建,electron-rebuild但似乎没有任何效果。
在 Linux 上它加载得很好,但问题是当我发送消息时,它似乎陷入了某个循环中,并且它不断发送数百条消息并无限期地继续这样做。这是通过从 Ubuntu 存储库中的 ZMQ 版本升级到从 ZeroMQ 网站下载的最新版本来解决的。
这是我在index.htmlElectron 应用程序文件中使用的代码。
const electron = require('electron')
const zmq = require('zmq')
const socket = zmq.socket('req')
socket.connect('tcp://10.10.0.51:3111')
socket.on('message', function (data) {
console.log(socket.identity + ': answer data ' + data)
})
socket.send('test')
Run Code Online (Sandbox Code Playgroud)
有没有其他人能够让 Electron + ZMQ 工作?如果是这样,你的开发环境是什么样的?谢谢。
问题是由 Electron 和您的 node.js 版本提供的不匹配的 node.js 二进制文件。长答案是您需要使用相同的 Node.js 头文件编译 Electron 和 ZeroMQ。这是来自 Electron 社区的回复http://github.com/electron/electron/issues/6805。不过现在有一个简短的答案!
使用zeromq替代的zmq(相同的API)。zeromq为 OS X、Windows 和 macOS/OS X 的 Electron 和 node.js 提供预构建的二进制文件。安装后zeromq,为您使用的电子版本重建:
npm rebuild zeromq --runtime=electron --target=1.4.5
Run Code Online (Sandbox Code Playgroud)
感谢 zeromq.js 团队,祝您玩得开心 ZeroMQ!