使用npm时出现“无此文件或目录”错误


34

我按照此处提供的说明安装了node和npm

我能够成功使用节点。但是,当我尝试安装“ Formidable”节点模块时,出现以下错误:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

当我做一个which npm我得到以下输出:

$which npm
/usr/local/bin/npm

我对这里的npm有什么问题一无所知-关于如何解决这个问题的任何想法?


欢迎来到Ask Ubuntu!我看到您已经在中安装了Node /usr/local/bin/。您在链接说明中使用的软件包不会执行此操作。我认为您也已经从源代码安装了另一个Node。请讲整个故事。
gertvdijk

@gertvdijk好吧,最初安装了节点0.8.14。我想将其升级到0.8.18。然后我跑了,$sudo apt-get remove --purge nodejs npm但这没用。node --version安装0.8.18之后仍然显示0.8.14。所以,我所做的是跟随一条我现在找不到的帖子-它基本上被指示要执行此操作- which node随后是rm -r /usr/local/bin/...该目录下的一些与节点相关的文件。现在,在此之后,我重新安装了节点,它是更新的版本。它的工作正常,但npm不是。
user109187 2013年

是的,这就是从源代码安装时发生的情况。这会使您的软件包管理和您(作为用户)感到困惑。除非您知道自己在做什么,否则请仅将软件作为软件包安装。将卸载说明与用于安装此早期版本的脚本一起使用,以正确卸载它。并请 编辑您的问题以提供更多信息。您看到的是一个问答网站,而不是讨论论坛。:)
gertvdijk

@gertvdijk我发现了指示手动删除文件后- stackoverflow.com/a/5917184/1907800。此处的路径是/ usr / bin / node
2013年

Answers:


51

在@gertvdijk提示下,我使用以下脚本卸载了NPM:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(可以在这里找到)

即使执行了以上操作,我仍然遇到另一个错误:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

因此,我hash -r在终端上跑了(按照NPM在升级后将不会运行)中的说明,瞧-它起作用了。NPM现在有效!


1
唯一有用的是发现hash,可以将其简单地指向另一个节点/ npm(如果我想使用多个版本的节点,该怎么办?)
user309383,2016年

美丽的来宾用户。
LM_Fielding

4
哈希-r救了我
diogo.abdalla

有什么用hash!?
Chanjung Kim

11

Ubuntu和某些Linux发行版将node的解释器安装为/usr/bin/nodejs,而不是/usr/local/bin/node

您可以安装nodejs-legacy/usr/bin/nodejs到创建符号链接的软件包来解决此问题/usr/bin/node

解:

sudo apt-get install nodejs-legacy

参考: nodejs-legacy软件包


1
似乎nodejs-legacy不再存在。
马丁·德拉·富恩特

2

看来您早些时候已经从源代码安装了另一个Node版本。这由/usr/local/bin现在似乎已安装的路径指示。

  1. 卸载从源代码安装的一个。请参阅源附带的说明。对于如何卸载与系统的软件包管理不兼容的软件脚本,没有唯一的方法。
  2. 在问题中链接到的说明中列出了安装软件包的方式。
  3. 验证which npm现在列出/usr/bin为安装路径。

通常,您永远不必安装源代码的软件包。而且,如果这样做了,请注意后果,因为此处覆盖了包管理,这将使它感到困惑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.