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

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

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

如何解决此错误?

Evan Carroll asked 2020-01-24T10:00:33Z
5个解决方案
106 votes

Ubuntu中有两个名称相似的软件包,即node和nodejs。

n latest做到了,

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

n latest做到了,

Description-zh:基于Node.js事件的服务器端JavaScript引擎Node.js在设计上与Ruby的Event Machine或Python的Twisted等系统相似,并受其影响。 它使事件模型更进一步-将事件循环显示为语言构造而不是库。 Node.js捆绑有一些有用的库来处理服务器任务:系统,事件,标准I / O,模块,计时器,子进程,POSIX,HTTP,多部分解析,TCP,DNS,断言,路径,URL,查询字符串。

Fedora也遵循类似的软件包命名方案。 因此,必须将n latest中的二进制文件从原始的n重命名为n latest。但是,从技术上讲,这并不是犹太洁食:并且大多数nodejs程序(以及安装有npm的库)都假定节点二进制文件为2716606222857405405443。 要解决这个问题,最简单的方法就是将两者符号链接在一起。 如果采用这种方式,请不要安装用于处理业余数据包无线电的node软件包。

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

或者,对于节点,建议不要使用n latest,而建议安装n latest。只需安装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

还有其他二进制发行版管理器,甚至可以使用像n latest这样的shell脚本来工作,但我个人更喜欢n latest。将n看作只适合做一件事:将节点二进制文件安装到/usr/local/bin

为什么要删除npm? 不是。 n latest只能删除软件包管理器安装的内容。 n latest在程序包管理器之外工作。 如果执行此操作,则有两个npm

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

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

Evan Carroll answered 2020-01-24T10:01:46Z
21 votes

您应该安装nodejs-legacy软件包,该软件包具有从/ usr / bin / node到/ usr / bin / nodejs的链接

$ sudo apt-get install nodejs-legacy

Sergey Fedoseev answered 2020-01-24T10:02:10Z
4 votes

就我而言,这是因为在我的PATH环境变量中,我有“〜/ progs / node / bin /”,而“〜”似乎没有被env解析...用真正的完整路径(“ / home / myuser / node / bin“)解决了我的问题。

Anthony O. answered 2020-01-24T10:02:31Z
2 votes

这个解决方案

export PATH="$HOME/opt/nodejs/bin:$PATH"

为我解决了这个问题(假设$ HOME变量设置正确,它应该可以工作)。 这也使我可以避免对本地目录的路径进行硬编码(例如,以便在需要时可以将我的.bash_profile重新用于其他帐户/服务器)

SnapShot answered 2020-01-24T10:02:55Z
0 votes

在cmd中做到这一点

sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)
Bilal Naqvi answered 2020-01-24T10:03:15Z
translate from https://stackoverflow.com:/questions/14914715/express-js-no-such-file-or-directory