繁体   English   中英

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

[英]Express.js: No Such file or directory

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

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

如何解决此错误?

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

node这样做,

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

nodejs这样做,

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

Fedora 也遵循类似的包命名方案。 因此,必须将nodejs的二进制文件从原始node重命名为nodejs 然而,这在技术上并不符合:大多数 nodejs 程序(和使用 npm 安装的库)都假设 node 二进制文件是node 如果你想解决这个问题,最简单的方法就是将两者符号链接在一起。 如果你走这条路,不要安装处理业余分组无线电内容的node包。

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

或者,在 node 的情况下,我建议使用n而不是安装node 只需安装 npm(将安装 node),然后删除 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视为仅用于一件事的 apt:它安装到/usr/local/bin的节点二进制文件。

为什么要删除 npm? 不是。 apt-get --purge remove只能删除包管理器安装的东西。 n latest包管理器之外的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") 解决了我的问题。

这个解决方案

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

为我解决了这个问题(假设 $HOME 变量设置正确,它应该可以工作)。 它还允许我避免对我的主目录的路径进行硬编码(例如,如果需要,我可以使用不同的帐户/服务器重用我的 .bash_profile)

在 cmd 中执行此操作

sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)

免责声明:仅适用于通过部署工具运行的 bash 命令

注意:在远程服务器中,如果您可以运行 node 命令,但通过部署工具(如 shipit server)抛出/usr/bin/env: 'node': No such file or directory 创建符号链接将解决错误。

sudo ln -s $(which node) /usr/bin/node
sudo ln -s $(which npm) /usr/bin/npm
sudo ln -s $(which pm2) /usr/bin/pm2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM