Express.js:没有这样的文件或目录
我用apt-get install nodejs
安装节点。 然后我用apt-get install npm
。 现在,当我尝试运行express
我得到
$ express /usr/bin/env: node: No such file or directory
我该如何解决这个错误?
Ubuntu中有两个名称相似的包, node和nodejs 。
node
做到这一点,
Description-en:业余分组无线电节点程序。 节点程序接受TCP / IP和分组无线电networking连接,为用户提供一个接口,允许他们使用各种业余无线电协议build立到远程主机的网关连接。
nodejs
这样做,
描述-en:Node.js基于事件的服务器端javascript引擎Node.js在devise上与Ruby的Event Machine或者Python的Twisted系统相似,并且受其影响。 它使事件模型更进一步 – 它将事件循环呈现为语言结构而不是库。 Node.js捆绑了几个有用的库来处理服务器任务:系统,事件,标准I / O,模块,定时器,subprocess,POSIX,HTTP,多部分parsing,TCP,DNS,断言,path,URL,查询string。
Fedora也遵循类似的软件包命名scheme。 因此, nodejs
的二进制nodejs
必须从原始node
重命名为nodejs
。 但是,这在技术上并不是犹太教:大多数nodejs程序(和npm安装的库)假定节点二进制文件是node
。 如果你想解决这个问题,最简单的方法就是把两者联系在一起。 如果你走这条路,不要安装处理业余数据包收音机东西的node
包。
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
或者,在节点的情况下,我build议使用n
而不是安装node
。 只需安装npm(将安装节点),然后删除npm,然后告诉apt来清理它。 要做到这一点,只需运行
sudo apt-get install npm sudo npm install -gn sudo n latest sudo apt-get --purge remove npm sudo apt-get autoremove
还有其他的二进制发行版pipe理器,甚至可以像nvm
这样的shell脚本工作,但我个人更喜欢n
。 把n
想象成只是一件事:它安装到/usr/local/bin
的节点二进制文件。
为什么要删除npm? 不是。 apt-get --purge remove
只能删除包pipe理器安装的东西。 n latest
作品在包pipe理者之外。 如果你这样做有两个npms,
- 版本(Debian / Ubuntu)使用
apt-get
。 - 版本
n latest
安装。
没有发行发行版的旧版本的意义。 更糟糕的是,如果这个版本能够工作的话,它可能会安装到不同的位置,并且在Debian中修改Debian安装目录。 最好使用/或而不是两者。
你应该安装nodejs-legacy软件包,它有一个从/ usr / bin / node到/ usr / bin / nodejs的链接
$ sudo apt-get install nodejs-legacy
在我的情况下,这是因为在我的PATH
环境variables中,我有“〜/ progs / node / bin /”和“〜”似乎没有被env
解决…用真正的完整path(“ home / myuser / node / bin“)解决了我的问题。
这个解决scheme
export PATH="$HOME/opt/nodejs/bin:$PATH"
为我解决这个问题(它应该工作假设$ HOMEvariables设置正确)。 它也使我可以避免硬编码到我的主目录的path(例如,如果需要,我可以重用我的.bash_profile与不同的帐户/服务器)
在cmd中执行此操作
sudo apt-get install nodejs-legacy chmod your folder 700 (optional)