当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

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

如何解决此错误?

最佳思路

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

node会这样做,

Description-en: Amateur Packet Radio Node program. The node program accepts TCP/IP and packet radio network connections and presents users with an interface that allows them to make gateway connections to remote hosts using a variety of amateur radio protocols.

nodejs会这样做,

Description-en: Node.js event-based server-side javascript engine Node.js is similar in design to and influenced by systems like Ruby’s Event Machine or Python’s Twisted. It takes the event model a bit further – it presents the event loop as a language construct instead of as a library. Node.js is bundled with several useful libraries to handle server tasks : System, Events, Standard I/O, Modules, Timers, Child Processes, POSIX, HTTP, Multipart Parsing, TCP, DNS, Assert, Path, URL, Query Strings.

Fedora也遵循类似的软件包命名方案。因此,必须将nodejs中的二进制文件从原始node重命名为nodejs。但是,从技术上讲,这不是可理解的:大多数nodejs程序(和npm安装的库)都假定节点二进制文件是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

还有其他二进制发行版管理器,甚至可以使用诸如nvm之类的shell脚本工作,但我个人更喜欢n。可以将n视为仅适用于一件事:将其安装到/usr/local/bin的节点二进制文件。

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

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

  2. n latest安装的版本。

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

次佳思路

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

$ sudo apt-get install nodejs-legacy

第三种思路

就我而言,这是因为在我的PATH环境变量中,我有”~/progs/node/bin/”,而”~”似乎无法由env解析…用真正的完整路径(“/home/myuser/node/bin”)替换它可以解决我的问题。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8617.html,未经允许,请勿转载。