是什么原因导致错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules'?
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
您可以通过Node版本管理器或Node安装程序安装npm。在文档中写道:
我们不建议使用Node安装程序,因为Node
安装过程将NPM安装在一个带有local的目录中
在运行NPM包时,可能会导致权限错误
在全球范围内。
NPM实际上建议使用节点版本管理器来避免这些错误。
由于您有权限错误,您可能是通过Node安装程序安装了npm,现在您需要使用nvm(节点版本管理器)重新安装它。
幸运的是,这非常简单。你甚至不需要删除当前版本的npm或Node.js。
你所需要做的就是
安装nvm。
OSX或Linux Node使用:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/<VERSION>/install.sh | bash .sh
<VERSION>应该替换为最新版本
这将在您的主目录中创建一个nvm文件夹。
Then
通过nvm安装npm和node.js。要这样做,只需打电话
NVM安装节点
(“node”是最新版本的别名)
现在你可以全局安装你的包,而不需要使用sudo或改变usr文件夹中node_modules的所有者。
看来你遇到许可问题了。如果您正在安装npm-packages,那么在尝试全局安装包时可能会得到EACCES错误。这意味着你没有权限写入npm用来存储全局包和命令的目录。
尝试执行命令:sudo chmod u+x -R 775 ~/。npm和sudo chown $USER -R ~/。或者你可以用sudo运行任何NPM命令,这应该能解决你的问题。
如果你在本地安装npm-package,那么你应该在你的本地项目目录下,可以尝试运行sudo npm install <pkg-name>命令来安装所需的包。使用sudo的目的是改变你的所有者权限,这样你就可以授权你的当前用户运行NPM命令。
我建议你去https://docs.npmjs.com/getting-started/fixing-npm-permissions看看
如果你在Mac上遇到了这个问题,请遵循以下步骤
首先检查谁是这个文件的所有者使用以下命令
ls -la /usr/local/lib/node_modules
你会在下面找到一些文件其中一个在下面
drwxr-xr-x 3 root wheel 768 May 29 02:21 node_modules
你有没有注意到上面的文件是由root拥有的,为了在里面做改变,你需要改变所有者的路径。
该命令用于检查谁是当前用户
id -un (in my case user is yamsol)
然后您可以通过调用这个命令来更改(只需将您的用户名替换为ownerName)
sudo chown -R ownerName: /usr/local/lib/node_modules
在我的例子中,你知道用户是“yamsol”,我将以这种方式调用这个命令
sudo chown -R yamsol: /usr/local/lib/node_modules
这是它。