Javascript npm WARN checkPermissions缺少对/usr/local/lib/node_模块的写入访问权限

Javascript npm WARN checkPermissions缺少对/usr/local/lib/node_模块的写入访问权限,javascript,reactjs,macos,npm,monaca,Javascript,Reactjs,Macos,Npm,Monaca,我正试图用这个命令安装monaca npm install -g monaca 但在出现这些错误之后: npm WARN checkPermissions缺少对/usr/local/lib/node_模块的写入访问权限 npm错误!path/usr/local/lib/node_模块 npm错误!代码EACCES npm错误!errno-13 npm错误!系统调用访问 npm错误!错误:EACCES:权限被拒绝,访问“/usr/local/lib/node\u modules” npm错误!{

我正试图用这个命令安装monaca

npm install -g monaca
但在出现这些错误之后:

npm WARN checkPermissions缺少对/usr/local/lib/node_模块的写入访问权限
npm错误!path/usr/local/lib/node_模块
npm错误!代码EACCES
npm错误!errno-13
npm错误!系统调用访问
npm错误!错误:EACCES:权限被拒绝,访问“/usr/local/lib/node\u modules”
npm错误!{错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules'
npm ERR!堆栈:“错误:EACCES:权限被拒绝,访问\'/usr/local/lib/node_modules\”,
npm ERR!errno:-13,npm ERR!代码:“EACCES”,
npm ERR!系统调用:“访问”,
npm错误!路径:'/usr/local/lib/node_modules'}
你知道怎么解决这个问题吗?
谢谢

解决此问题的不明智方法是使用sudo:

sudo npm install -g monaca
不过,最好找到一种不用sudo的方法来解决这个问题


注意:强烈建议不要将
sudo
与npm一起使用


不建议使用sudo。它可能会给你以后的许可问题。在上述工作正常的情况下,使用可永久解决您的问题。

在安装npm后将以下行添加到~/.bashrc中:

npm set prefix ~/.npm
PATH="$HOME/.npm/bin:$PATH"
PATH="./node_modules/.bin:$PATH"
更改后执行以下行:

source ~/.bashrc
正如@pumpositor所提到的避免使用
sudo
好吧,我使用了
--save dev
并不是全局安装的,也不是使用
-g
安装的,主要问题发生在您希望它在默认的
节点模块
文件夹中写入时

在检查多个问题4小时后,它解决了我的问题

我甚至建议您使用
npminit
并制作一个
package.json
以更好地进行依赖性检查,然后
运行npm
安装。此视频可帮助您实现这一点

它非常简单 你可以用

sudo npm安装-g kazam

苏-

然后

npm安装-g kazam

解释

su -
使您成为root用户,具有在所有用户中读取、写入和删除的权限


此命令将递归地(-R)更改指定目录中当前用户的所有者(chown)

sudo chown -R $USER /usr/local/lib/node_modules

不要使用
sudo

我不知道您环境的上下文,但我在运行Plesk的服务器上发现了错误

以下命令可能有助于(通过SSH)检查权限:

plesk repair fs example.com

手册:

在我的例子中,
node\u modules
文件夹是通过FTP复制的,因此它有错误的更正。如有必要,您可以使用
Npm安装
按钮通过Plesk将其删除并安装


信息:仅当文档包含包含信息的
包.json
时,该按钮才会出现。

请提供一个基于权限的完整最终修复程序,而不仅仅是sudo things不要将
sudo
npm
一起使用,你只是字面上说这是不可取的-所以不要成为问题的一部分,并给出建议。注意:如果在安装npm后使用添加上述行到
~/.zshrc
,请不要使用
sudo
。更改后执行以下行:
source~/.zshrc
更像zshrc的方法是
npm set prefix~/.npm;路径+=$HOME/.npm/bin;path+=./node\u modules/.bin
(使用path+=而不是像bash那样将现有路径附加到每一行)同样,使用sudo运行一些rando上传到npm的不受信任的代码,并且在您的系统上具有root权限。如果您对答案添加解释,答案将大大改进
sudo chown -R $USER /usr/local/lib/node_modules