试图获得 ZMQ Node bindings 让我非常头疼使用 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
我试过用 VS 2013 和 2015 编译,多次重建,使用
electron-rebuild
似乎没有任何工作。在 Linux 上它可以正常加载,但问题是当我发送一条消息时,它似乎卡在某个地方的循环中,并且它不断发送发送数百条消息并无限期地继续这样做。通过从 Ubuntu 存储库中的 ZMQ 版本升级到从 ZeroMQ 网站下载的最新版本,解决了这个问题。
这是我在
index.html
中使用的代码我的 Electron 应用程序的文件。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')
有其他人能够让 Electron + ZMQ 工作吗?如果有,你的开发环境是怎样的?谢谢。
最佳答案
问题是由 Electron 和您的 Node 版本提供的不匹配的 node.js 二进制文件。长答案是您需要使用相同的 Node.js header 编译 Electron 和 ZeroMQ。这是来自 Electron 社区的回复 http://github.com/electron/electron/issues/6805 .不过现在有一个简短的答案!
使用 zeromq
代替zmq
(相同的 API)。 zeromq
为 OS X、Windows 和 macOS/OS X 的 electron 和 node.js 提供预构建的二进制文件。安装后 zeromq
,为您正在使用的 Electron 版本重建:
npm rebuild zeromq --runtime=electron --target=1.4.5
感谢 zeromq.js 团队,享受 ZeroMQ 的乐趣!
关于javascript - 用于 Node.js 的 ZeroMQ 是否与 Electron 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38439854/