npm 目录应该在哪里?

Where is the npm directory supposed to be?

Node 版本为 17.7.1。当我 运行 npm -v 我得到:

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

但是当我 运行 npm root -g 我得到:

/usr/local/lib/node_modules

运行 npm list -g 也给了我与 运行ning npm -v.

相同的信息

那么,它应该在哪里,我该如何解决这个问题?

出现这种情况的原因有几个问题。


您的计算机似乎无法找到 npm 文件夹的以下路径(下方),但可以找到全局 node_modules 文件夹。

/usr/local/bin/npm

发生这种情况的原因有很多。幸运的是,这些问题有很多解决方案。


1.重新安装 Node.js 和 npm^

第一个解决方案很明显,就是重装Node.js和npm^.

安装过程非常简单。

  1. 如果您只使用命令行,您可以使用以下命令安装Node.js。 npm 命令随 Node.js.

    安装
    $ sudo apt-get install nodejs
    

    或者,如果您想使用安装程序,请从 nodejs.org 下载并 运行 安装程序。

  2. 检查 Node.js 和 npm 的版本,看看它是否有效。

    $ node -v
    $ npm -v
    

在这种情况下重新安装 Node.js 和 npm 的好处是,如果 Node.js 和 npm 一开始没有安装(极不可能),它将安装它们。

但是,如果它们已经安装,但是安装目录发生了一些事情(例如它被重命名、移动、删除或损坏),那么新安装很可能已经解决了这个问题。


2。将 /usr/local/bin/npm 添加到路径(适用于 OP 的解决方案)

如果第一个解决方案对您不起作用,那么下一个可能发生的问题可能是 /usr/local/bin/npm 不在您的路径中,这意味着 bash 无法找到它.

要将 npm 添加到您的路径,请按照以下步骤操作。

  1. 一般情况下,要获取npm的路径,需要运行以下命令。

    $ npm bin
    

    显然,我们必须使用变通方法。但是,我们可以只使用一个假定的路径来存储 npm 的二进制文件,即...

    /usr/local/bin/npm/bin
    

    但是,这可能会有所不同,因此,要确保它存在,您只需在命令行中输入它即可。

    $ cd /usr/local/bin/npm
    

    然后,可以运行ls命令,看看有没有bin文件夹或者.shshell脚本可以使用对于路径。

    $ ls
    

    确保保存二进制部分以备后用!

  2. 使用以下命令打开主目录。这是因为 .bashrc 文件位于主目录中(在下一步中使用)。

    $ cd $HOME
    
  3. 使用vi(或您选择的任何文件编辑器)打开.bashrc文件,但本例中将使用vi ).

    $ vi .bashrc
    

    然后,按i键进入插入模式。在文件中键入以下内容。

    export PATH=/usr/local/bin/npm/bin:$PATH
    

    vi中,按Esc,然后按以下键::,w, q, !, 输入.

    :wq!
    

    文件现已保存,编辑器已关闭。

  4. 正常情况下,.bashrc文件只在每次登录时读取。为避免这样做,您可以强制 bash 读取 .bashrc 文件并自行更新。为此,运行 以下命令。

    $ source .bashrc
    

    现在应该重新启动 bash shell。

这些步骤相当多(四个,但许多步骤被压缩为一个),但如果由于某种原因 npm 没有将自身添加到路径中,此解决方案应该可以修复它。


3.拒绝 read/write 访问

另一个问题是您的用户个人资料没有 read/write 到 usr/bin/local/npm 的正确权限,或者您没有授予 npm 权限。

此解决方案的修复非常简单。

  1. 运行 您想要 运行 使用 sudonpm 命令。

    $ sudo npm -v
    $ sudo npm list -g
    
  2. 如果需要,您可以 运行 自动 运行 使用 sudo.

    命令
    $ sudo -s
    $ npm -v
    $ npm list -g
    

警告:如果您没有 sudo 的密码,则无法 运行 使用上述 sudo 的任何命令。

这应该可以解决您的问题,如果被拒绝 read/write 访问就是问题所在。


很可能还有更多解决方案^^,但可能会在以后添加。


  • ^ 这是一个很平常的过程,但是不得不在这里加上,这样才能确定这个解法有已尝试。

  • ^^ 稍后可能会找到这些解决方案并编辑到此答案。 编辑过一次。

使用这个命令:

npm list -g

你应该在第一行看到你的 npm 目录