我刚刚安装了成功安装的nvm的nodejs版本0.10.14。 在安装nodejs之前,我安装了zeromq 2.2.0版。
出于测试目的,我试图在下面运行一个基本的pub示例。
var zmq = require('zmq');
var socket = zmq.socket('pub');
console.log("Binding socket on port 8800...");
socket.bind('tcp://localhost:8800', function(err){
if(err){
console.log(err)
} else{
console.log("listening on port 8800");
}
});
socket.send("hello this is testServer2 on port 8800...");
但这是错误 -
events.js:72
throw er; // Unhandled 'error' event
^
TypeError: Socket is busy
at Socket._ioevents (/home/zishan/node_modules/zmq/lib/index.js:198:22)
at Socket._flush (/home/zishan/node_modules/zmq/lib/index.js:343:23)
at Socket.send (/home/zishan/node_modules/zmq/lib/index.js:318:42)
at Object.<anonymous> (/home/zishan/newsURLCollector/testServer2.js:16:8)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
端口8800已使用ufw打开。
我试着谷歌搜索套接字繁忙的错误,但没有运气,我认为重启Ubuntu是好的,问题更严重。当我重新登录并尝试再次运行上述示例时,系统会抛出消息:
zishan@news01:~/newsURLCollector$ node testServer2.js
The program 'node' can be found in the following packages:
* node
* nodejs-legacy
Try: sudo apt-get install <selected package>
为什么地球上的工作节点停止工作并且无法找到节点。然后我按照系统提示做了以下结果 sudo apt-get install node :
zishan@news01:~$ sudo apt-get install node
[sudo] password for zishan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
libpgm-5.1-0
Use 'apt-get autoremove' to remove it.
The following NEW packages will be installed
node
0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded.
Need to get 0 B/1,284 B of archives.
After this operation, 38.9 kB of additional disk space will be used.
Selecting previously unselected package node.
(Reading database ... 66172 files and directories currently installed.)
Unpacking node (from .../node_0.3.2-7.4_all.deb) ...
Processing triggers for man-db ...
Setting up node (0.3.2-7.4) ...
zishan@news01:~$ node -v
然后我试图找到节点版本,但没有发生任何事情,我现在没有得到节点提示,但是当我做“哪个节点”它说 - / usr / sbin / node
重启后我不知道出了什么问题。任何人都可以解释一下。
答案 0 :(得分:8)
当NVM加载时,它会加载当前标记为default
的任何版本的Node。
nvm install v0.10.14
会安装v0.10.14
并告诉NVM在您当前的终端中键入node
使其可供您使用,但它不会将其标记为默认值,因为您可以就像安装5个版本的节点一样容易。 NVM也没有做任何想要记住你最后使用的Node的版本,因为你可能有10个终端打开,每个终端都有不同的版本。
您需要做的只是运行nvm use v0.10.14
告诉您的终端将v0.10.14
公开为node
。
在您的情况下,最好的办法可能是将其设置为默认值,因此它将在每次重启和新终端时使用它:
nvm alias default v0.10.14
正如你已经想到的那样,通过运行
apt-get install node
你安装了这个:http://packages.qa.debian.org/n/node.html
我现在也建议您apt-get remove nodejs
并坚持使用nvm
。 deb
软件包相当快速地过时,使用NVM可以让您更轻松地跟上。
答案 1 :(得分:0)
经过长时间的努力,它现在正在运行,我使用下面的链接删除然后再使用apt-get安装节点。但我现在唯一使用的是使用清除开关删除节点。
https://askubuntu.com/questions/235655/node-js-conflicts-sbin-node-vs-usr-bin-node
我在上面的链接中使用:
sudo apt-get --purge删除节点 sudo apt-get --purge删除nodejs sudo apt-get install nodejs
现在nodejs工作正常,zmq也正常。我认为这是purge命令,它完成了以前我从源tar构建并手动删除的工作,因为apt-get单独工作不起作用!
其他人注意 - 并非所有版本的nodejs都与zmq兼容,我正在使用的是zmq Nodejs - 0.10.24 zeromq - 2.2.0
答案 2 :(得分:0)
基本上,您机器上安装的软件包称为“nodejs”而不是“node”。所以你的命令需要改为:
zishan@news01:~/newsURLCollector$ nodejs testServer2.js
ubuntu中的包'node'已经被业余分组无线电节点“节点”程序所采用,所以当节点出现在ubuntu apt包中时,它被重命名为nodejs。