我安装了节点apt-get install nodejs。然后我用安装了npm apt-get install npm。现在,当我尝试运行express我得到
apt-get install nodejs
apt-get install npm
express
$ express /usr/bin/env: node: No such file or directory
如何解决此错误?
Ubuntu中有两个名称相似的软件包 node 和 nodejs 。
node 做这个,
node
Description-zh:业余分组无线节点程序。节点程序接受TCP / IP和分组无线网络连接,并为用户提供一个接口,该接口允许他们使用各种业余无线协议与远程主机建立网关连接。
nodejs 做这个,
nodejs
Description-zh:基于事件的Node.js服务器端JavaScript引擎Node.js在设计上与Ruby的Event Machine或Python的Twisted等系统相似,并受其影响。它使事件模型更进一步- 将事件循环显示为语言构造而不是库。Node.js捆绑有一些有用的库来处理服务器任务:系统,事件,标准I / O,模块,计时器,子进程,POSIX,HTTP,多部分解析,TCP,DNS,断言,路径,URL,查询字符串。
Fedora也遵循类似的软件包命名方案。因此,必须将二进制文件in 从原始文件nodejs重命名为。但是,从技术上讲,这不是可理解的:大多数nodejs程序(以及随npm安装的库)都假定节点二进制文件为。如果您想解决这个问题,最简单的方法就是将两者符号链接在一起。如果您采用这种方式,请不要安装用于处理业余分组无线电设备的软件包。nodejs``node``node``node
nodejs``node``node``node
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
另外,在使用节点的情况下,建议n不要使用node。只需安装npm(将安装节点),然后删除npm,然后告诉apt清理它。为此,只需运行
n
sudo apt-get install npm sudo npm install -g n sudo n latest sudo apt-get --purge remove npm sudo apt-get autoremove
还有其他二进制发行版管理器,甚至可以使用像shell脚本这样的脚本,nvm但是我个人更喜欢n。想像一下n只适合做一件事:它安装到的节点二进制文件/usr/local/bin。
nvm
/usr/local/bin
为什么要删除npm?不是。apt-get --purge remove可 仅 过移除由包管理器安装的东西。n latest在包管理器之外工作。如果执行此操作,则有两个npm,
apt-get --purge remove
n latest
apt-get
使用发行版的旧版本毫无意义。而且,甚至更糟的是,如果该版本有效,它可能会安装到其他位置,并在其中进行Debian修改,以采用Debian安装目录。最好同时使用其中一个或两个,但不要同时使用。