小编典典

Express.js:否这样的文件或目录

node.js

我安装了节点apt-get install nodejs。然后我用安装了npm apt-get install npm。现在,当我尝试运行express我得到

$ express 
/usr/bin/env: node: No such file or directory

如何解决此错误?


阅读 190

收藏
2020-07-07

共1个答案

小编典典

Ubuntu中有两个名称相似的软件包 nodenodejs

node 做这个,

Description-zh:业余分组无线节点程序。节点程序接受TCP /
IP和分组无线网络连接,并为用户提供一个接口,该接口允许他们使用各种业余无线协议与远程主机建立网关连接。

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

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

另外,在使用节点的情况下,建议n不要使用node。只需安装npm(将安装节点),然后删除npm,然后告诉apt清理它。为此,只需运行

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

为什么要删除npm?不是。apt-get --purge remove 过移除由包管理器安装的东西。n latest在包管理器之外工作。如果执行此操作,则有两个npm,

  1. 发行版(Debian / Ubuntu)使用安装的版本apt-get
  2. 由安装的版本n latest

使用发行版的旧版本毫无意义。而且,甚至更糟的是,如果该版本有效,它可能会安装到其他位置,并在其中进行Debian修改,以采用Debian安装目录。最好同时使用其中一个或两个,但不要同时使用。

2020-07-07