问题
在终端中输入命令 npm install zeromq --save --save-exact
JunkingdeMacBook-Pro-3973:zeromqTest junking$ npm install zeromq --save --save-exact
> [email protected] install /Users/junking/Documents/NodeFinder/zeromqTest/node_modules/zeromq
> node scripts/prebuild-install.js || (node scripts/preinstall.js && node-gyp rebuild)
然后终端就停留在这个地方不动了。
如果查看package.json中的dependencies中也没有zeromq的版本号,说明未安装成功。
再用npm安装其他模块可以正常安装,说明很有可能是zeromq的问题。
解决
其实继续等待即可。
我们可以看到,安装足足用了4分钟,让我误以为哪里出了问题。
使用命令测试是否安装成功:
node -p -e "require('zeromq').version"
-e告诉node直接解析后面的字符串
-p告诉node直接将结果输出到控制台
zeromq模块的.version属性的值是ZeroMQ的二进制版本
原因
zeromq的安装间接调用了prebuid-install.js,用于下载安装Node.js预编译二进制文件的命令行工具。这个脚本会根据当前操作系统自动安装。
脚本的加载对应这一行
node scripts/prebuild-install.js || (node scripts/preinstall.js && node-gyp rebuild)
你或许会疑惑我们安装的是[email protected],但为何命令测试是4.2.2呢?
zeromq模块的.version属性的值是ZeroMQ的二进制版本,反映的是底层libzmq二进制文件的版本,而不是npm模块zeromq的版本