linux重启后,nodejs消失了

zis*_*han 5 zeromq node.js

我刚用安装成功的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...");
Run Code Online (Sandbox Code Playgroud)

但这是投掷错误 -

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)
Run Code Online (Sandbox Code Playgroud)

端口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>
Run Code Online (Sandbox Code Playgroud)

为什么地球上的工作节点停止工作并且无法找到节点.然后我按照系统提示,并在下面做了sudo apt-get install节点的结果:

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
Run Code Online (Sandbox Code Playgroud)

然后我试图找到节点版本,但没有发生任何事情,我现在没有得到一个节点提示,但当我做"哪个节点"它说 - /usr/sbin/node

重启后我不知道出了什么问题.任何人都可以解释一下.

log*_*yth 8

当NVM加载时,它会加载当前标记为的任何版本的Node default.

nvm install v0.10.14将安装v0.10.14并告诉NVM通过键入node您当前的终端使其可供您使用,但它不会将其标记为默认值,因为您可以轻松安装5个版本的节点.NVM也没有像记得你最后使用的Node版本那样花哨的东西,因为你可能有10个终端打开,每个终端都有不同的版本.

所有你需要做的就是nvm use v0.10.14告诉你的终端暴露v0.10.14node.

在你的情况下,最好的办法可能是将其设置为默认值,因此它将在每次重启和新终端上使用它:

nvm alias default v0.10.14
Run Code Online (Sandbox Code Playgroud)

正如你已经想到的那样,通过跑步

apt-get install node
Run Code Online (Sandbox Code Playgroud)

你安装了这个:http://packages.qa.debian.org/n/node.html

我现在也会推荐你apt-get remove nodejs并坚持下去nvm.这些deb软件包相当快速地过时,使用NVM可以让您更轻松地跟上.


zis*_*han 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 安装nodejs

现在nodejs 工作正常,zmq 也工作正常。我认为这是 purge 命令完成的工作,就像之前我从源 tar 构建并手动删除一样,因为 apt-get 单独不起作用!

其他人请注意 - 并非所有版本的 Nodejs 都与 zmq 兼容,我使用的是 Nodejs - 0.10.24 Zeromq - 2.2.0