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^.
安装过程非常简单。
如果您只使用命令行,您可以使用以下命令安装Node.js。 npm 命令随 Node.js.
安装
$ sudo apt-get install nodejs
或者,如果您想使用安装程序,请从 nodejs.org 下载并 运行 安装程序。
检查 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
添加到您的路径,请按照以下步骤操作。
一般情况下,要获取npm
的路径,需要运行以下命令。
$ npm bin
显然,我们必须使用变通方法。但是,我们可以只使用一个假定的路径来存储 npm 的二进制文件,即...
/usr/local/bin/npm/bin
但是,这可能会有所不同,因此,要确保它存在,您只需在命令行中输入它即可。
$ cd /usr/local/bin/npm
然后,可以运行ls
命令,看看有没有bin
文件夹或者.sh
shell脚本可以使用对于路径。
$ ls
确保保存二进制部分以备后用!
使用以下命令打开主目录。这是因为 .bashrc
文件位于主目录中(在下一步中使用)。
$ cd $HOME
使用vi
(或您选择的任何文件编辑器)打开.bashrc
文件,但本例中将使用vi
).
$ vi .bashrc
然后,按i键进入插入模式。在文件中键入以下内容。
export PATH=/usr/local/bin/npm/bin:$PATH
在vi
中,按Esc,然后按以下键::,w, q, !, 输入.
:wq!
文件现已保存,编辑器已关闭。
正常情况下,.bashrc
文件只在每次登录时读取。为避免这样做,您可以强制 bash
读取 .bashrc
文件并自行更新。为此,运行 以下命令。
$ source .bashrc
现在应该重新启动 bash
shell。
这些步骤相当多(四个,但许多步骤被压缩为一个),但如果由于某种原因 npm 没有将自身添加到路径中,此解决方案应该可以修复它。
3.拒绝 read/write 访问
另一个问题是您的用户个人资料没有 read/write 到 usr/bin/local/npm
的正确权限,或者您没有授予 npm
权限。
此解决方案的修复非常简单。
运行 您想要 运行 使用 sudo
的 npm
命令。
$ sudo npm -v
$ sudo npm list -g
如果需要,您可以 运行 自动 运行 使用 sudo
.
命令
$ sudo -s
$ npm -v
$ npm list -g
警告:如果您没有 sudo
的密码,则无法 运行 使用上述 sudo
的任何命令。
这应该可以解决您的问题,如果被拒绝 read/write 访问就是问题所在。
很可能还有更多解决方案^^,但可能会在以后添加。
^ 这是一个很平常的过程,但是不得不在这里加上,这样才能确定这个解法有已尝试。
^^ 稍后可能会找到这些解决方案并编辑到此答案。 编辑过一次。
使用这个命令:
npm list -g
你应该在第一行看到你的 npm 目录
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^.
安装过程非常简单。
如果您只使用命令行,您可以使用以下命令安装Node.js。 npm 命令随 Node.js.
安装$ sudo apt-get install nodejs
或者,如果您想使用安装程序,请从 nodejs.org 下载并 运行 安装程序。
检查 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
添加到您的路径,请按照以下步骤操作。
一般情况下,要获取
npm
的路径,需要运行以下命令。$ npm bin
显然,我们必须使用变通方法。但是,我们可以只使用一个假定的路径来存储 npm 的二进制文件,即...
/usr/local/bin/npm/bin
但是,这可能会有所不同,因此,要确保它存在,您只需在命令行中输入它即可。
$ cd /usr/local/bin/npm
然后,可以运行
ls
命令,看看有没有bin
文件夹或者.sh
shell脚本可以使用对于路径。$ ls
确保保存二进制部分以备后用!
使用以下命令打开主目录。这是因为
.bashrc
文件位于主目录中(在下一步中使用)。$ cd $HOME
使用
vi
(或您选择的任何文件编辑器)打开.bashrc
文件,但本例中将使用vi
).$ vi .bashrc
然后,按i键进入插入模式。在文件中键入以下内容。
export PATH=/usr/local/bin/npm/bin:$PATH
在
vi
中,按Esc,然后按以下键::,w, q, !, 输入.:wq!
文件现已保存,编辑器已关闭。
正常情况下,
.bashrc
文件只在每次登录时读取。为避免这样做,您可以强制bash
读取.bashrc
文件并自行更新。为此,运行 以下命令。$ source .bashrc
现在应该重新启动
bash
shell。
这些步骤相当多(四个,但许多步骤被压缩为一个),但如果由于某种原因 npm 没有将自身添加到路径中,此解决方案应该可以修复它。
3.拒绝 read/write 访问
另一个问题是您的用户个人资料没有 read/write 到 usr/bin/local/npm
的正确权限,或者您没有授予 npm
权限。
此解决方案的修复非常简单。
运行 您想要 运行 使用
sudo
的npm
命令。$ sudo npm -v $ sudo npm list -g
如果需要,您可以 运行 自动 运行 使用
命令sudo
.$ sudo -s $ npm -v $ npm list -g
警告:如果您没有 sudo
的密码,则无法 运行 使用上述 sudo
的任何命令。
这应该可以解决您的问题,如果被拒绝 read/write 访问就是问题所在。
很可能还有更多解决方案^^,但可能会在以后添加。
^ 这是一个很平常的过程,但是不得不在这里加上,这样才能确定这个解法有已尝试。
^^ 稍后可能会找到这些解决方案并编辑到此答案。 编辑过一次。
使用这个命令:
npm list -g
你应该在第一行看到你的 npm 目录