错误:EACCES: permission denied, access '/usr/local/lib/node_modules'

什么可能导致错误Error: EACCES: permission denied, access '/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
719800 次浏览

看来你遇到许可问题了。如果您正在安装npm-packages,那么在尝试全局安装包时,可能会出现EACCES错误。这意味着您没有权限写入npm用来存储全局包和命令的目录。

尝试运行命令:sudo chmod u+x -R 775 ~/.npmsudo chown $USER -R ~/.npm,或者您可以使用sudo运行任何npm命令,这应该可以解决您的问题。

如果您正在本地安装npm-package,那么您应该在本地项目目录中,并可以尝试运行sudo npm install <pkg-name>命令来安装所需的包。使用sudo的目的是它将改变您的所有者权限,以便您可以授权当前用户运行npm命令。

我建议你看看https://docs.npmjs.com/getting-started/fixing-npm-permissions

尝试在您尝试的任何命令之前添加sudo

像这样:Sudo NPM安装

在Linux/UNIX中,将sudo与命令一起使用通常会将权限提升到超级用户级别。在Windows系统中,超级用户帐户通常被称为“Administrator”。在Linux/Unix中,超级用户帐户通常命名为“root”。

root用户拥有访问、修改或删除计算机上几乎所有文件的权限。普通用户帐户可以访问、修改或删除的文件要少得多。对普通帐户的限制可保护您的计算机免受未经授权或有害程序或用户的侵害。有些进程要求您对通常没有访问权限的文件或文件夹执行操作。安装一个每个人都可以访问的程序就是这些操作之一。

在本例中,使用sudo运行安装命令可以为您提供超级用户的权限,并允许您修改普通用户没有权限修改的文件。

使用该命令安装npm 作为sudo用户:

sudo npm install -g create-react-app

< >强而不是 NPM install -g create-react-a pp.

更改您的文件权限…像这样

首先检查谁拥有这个目录

ls -la /usr/local/lib/node_modules

它拒绝访问,因为node_module文件夹属于root用户

drwxr-xr-x   3 root    wheel  102 Jun 24 23:24 node_modules

所以这需要通过将root改为你的用户来改变,但首先运行下面的命令来检查你的当前用户如何通过OS X中的命令行获取活动用户的名称?

# eyz0或# eyz1

然后换主人

sudo chown -R [owner]:[owner] /usr/local/lib/node_modules

sudo chown -R ownerName: /usr/local/lib/node_modules

sudo chown -R $USER /usr/local/lib/node_modules
当在ubuntu中安装全局包时,您需要特殊的写入权限,因为您正在写入usr/bin文件夹。这是出于安全考虑。 因此,每次安装全局包时,使用:

sudo npm install -g [package-name]

对于您的具体情况,它将是:

sudo npm install -g typescript

更改/usr/local下所有目录的所有者的所有响应 基本上,不要破坏Linux系统!!< / p >

对于本地的东西使用sudo也是真正的糟糕的建议

www.competa.com的原始链接被破坏了,所以这是原始的方法:

npm config set prefix ~/.npm


# open your .bashrc (Linux) or .bash_profile (Mac) file for editing:
nano ~/.bashrc # for Linux
# or...
nano ~/.bash_profile # for Mac if you haven't created a .bashrc file


# add these lines:
export PATH="$PATH:$HOME/npm/bin"
export NODE_PATH="$NODE_PATH:$HOME/npm/lib/node_modules"


# save the file and then enter this command or logout and login to make the changes take effect:
. ~/.bashrc
# or...
. ~/.bash_profile


使用类似NVM的版本管理器

似乎你试图在全局而不是本地安装npm包,正如man npm install所描述的:

- g——全球参数将导致npm在全局而不是本地安装包。

一般来说,当你在设置一个npm项目时(在你可能有的许多其他项目中),在Node.js的全局模块(/usr/local/lib/node_modules)上安装包不是一个好主意,就像你的调试日志建议的那样。

不要使用-g,而是使用--save,它会自动将包保存为package.json文件的依赖项:

是这样的:

$ npm install express-generator --save


$ cat package.json
{
"name": "first_app_generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "ivanleoncz",
"license": "MIT",
"dependencies": {
"express-generator": "^4.16.0"
}
}

但正如其他答案所提到的,如果要使用-g,则在执行npm install express-generator -g时必须使用sudo (如果您的用户有sudo权限:查看/etc/sudoers),但实际上,这不是一个好主意,可能会导致权限问题。

请注意

这里有关于使用-g选项安装express-generator的说明,为了让脚本express-cli.js在系统路径上可用,但是你也可以使用本地安装的脚本,如果你的npm项目位于node_modules:

$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp

如果出现/usr/bin/env: ' node ':没有这样的文件或目录这样的信息,安装nodejs-legacy (Debian/Ubuntu)

恕我直言,如果你不确定结果,使用-g(也使用sudo)就像该死的龙

欲知更多信息:

你所需要做的就是将USER添加到/local/lib的所有者

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

编辑:

要精确地定位并只定位node_modules文件夹,请在使用前一个命令之前尝试使用这个命令:

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

您可以简单地更改所有者,或者在执行这样的命令之前使用sudo

# EYZ0 (# EYZ1)

sudo npm install -g json-server

就是这样。

为了尽量减少权限错误的机会,你可以配置npm使用不同的目录。在本例中,您将在主目录中创建并使用一个隐藏目录。

备份你的电脑。 在命令行上,在您的主目录中,为全局安装创建一个目录:

mkdir ~/.npm-global

配置npm使用新的目录路径:

npm config set prefix '~/.npm-global'

在您首选的文本编辑器中,打开或创建~/.profile文件并添加这一行:

export PATH=~/.npm-global/bin:$PATH

在命令行,更新你的系统变量:

source ~/.profile

要测试新配置,请在不使用sudo的情况下全局安装一个包。


来源:NPM 网站

安装React需要超级用户级别的权限。在Linux/Unix中,超级用户帐户通常命名为“root”。

要获得超级用户权限,只需在您的终端上运行以下命令:

sudo -i

然后运行命令安装React:

npm install -g create-react-app

但是,reactjs团队鼓励我们使用以下命令,而不是安装全局包。

npx create-react-app app_name

我试图安装react博览会,除了sudo,我必须添加-不安全的烫发

像这样。这解决了我的问题

sudo npm install -g expo-cli --unsafe-perm

# EYZ0

首先检查谁是这个文件的所有者使用以下命令

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

这是它。

我用过sudo,但它没有解决问题, 我已经通过改变node_modules文件夹权限修正了这个问题,

sudo chmod -R 777 node_modules

如果你不为所有用户/组设置权限,你可以用任何其他代码替换777。

我可以通过安装nvm来解决这个问题,然后将节点设置为最新版本。

  1. 使用curl安装nvm(最新版本转到nvm.sh)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  1. 列出可用节点版本
nvm ls
< p > v10.12.0 < br > 默认值-> v10.12 (-> v10.12.0)
Node -> stable (-> v10.12.0)(默认值)
. Node -> stable (-> v10.12.0 Stable -> 10.12 (-> v10.12.0)
…< / p >
  1. 选择要使用的节点版本
nvm use v10.12

NVM不兼容NPM配置“前缀”选项:当前设置为“”

  1. 运行此命令取消设置该选项:
nvm use --delete-prefix v10.12.0

按照上面的命令,你就可以在Ubuntu中安装react/angular了。

对于linux / ubuntu如果命令

# EYZ0

npm WARN deprecated superagent@4.1.0: Please note that v5.0.1+ of superagent removes User-Agent header by default, therefore you may need to add it yourself (e.g. GitHub blocks requests without a User-Agent header).  This notice will go away with v5.0.2+ once it is released.


npm ERR! path ../lib/node_modules/<package_name>/bin/..


npm ERR! code EACCES


npm ERR! errno -13


npm ERR! syscall symlink


npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules
/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'


npm ERR!  { [Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>']


npm ERR!   cause:
npm ERR!    { Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'


npm ERR!      errno: -13,


npm ERR!      code: 'EACCES',


npm ERR!      syscall: 'symlink',


npm ERR!      path: '../lib/node_modules/<package_name>/bin/..',
npm ERR!      dest: '/usr/local/bin/ionic' },


npm ERR!   stack:
npm ERR!    'Error: EACCES: permission denied, symlink \'../lib/node_modules/ionic/bin/ionic\' -> \'/usr/local/bin/ionic\'',


npm ERR!   errno: -13,


npm ERR!   code: 'EACCES',


npm ERR!   syscall: 'symlink',


npm ERR!   path: '../lib/node_modules/<package-name>/bin/<package-name>',


npm ERR!   dest: '/usr/local/bin/<package-name>' }


npm ERR!


npm ERR! The operation was rejected by your operating system.


npm ERR! It is likely you do not have the permissions to access this file as the current user


npm ERR!


npm ERR! If you believe this might be a permissions issue, please double-check the


npm ERR! permissions of the file and its containing directories, or try running


npm ERR! the command again as root/Administrator (though this is not recommended).




npm ERR! A complete log of this run can be found in:


npm ERR!     /home/User/.npm/_logs/2019-07-29T01_20_10_566Z-debug.log

修复:安装与根权限

# EYZ0

帮助只有这个:

sudo chown -R ownerName: /usr/local/lib/node_modules

我能够在mac中使用以下方法解决这个问题。

sudo npm install -g @aws-amplify/cli --unsafe-perm=true

我尝试了@okanda给出的答案的解决方案,但对我不起作用。

然而,当我在这个线程中提到的几个文件夹:https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493时,它工作得很完美

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

对于nvm用户

sudo chown -R $USER /home/bereket/.nvm/versions/node/v8.9.1/lib/node_modules

而且

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

v8.9.1替换为您正在使用的节点版本。

您可以通过Node版本管理器或Node安装程序安装npm。在文档中,它指出:

我们不建议使用Node安装程序,因为Node 安装过程将NPM安装在一个带有local的目录中 在运行NPM包时,可能会导致权限错误 全球。< / p >

NPM实际上是建议使用节点版本管理器来避免这些错误。

因为你有允许误差,你可能是通过Node安装程序安装了npm,现在你需要用nvm(节点版本管理器)重新安装它。

幸运的是,这非常简单。你甚至不需要删除当前版本的npm或Node.js。

你所需要做的就是

    <李> < p > # EYZ0安装。 对于OSX或Linux节点:

     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/<VERSION>/install.sh | bash
    

<VERSION>应该替换为最新版本

这将在您的主目录中创建一个nvm文件夹。

然后

  1. 通过nvm安装npm和node.js要这样做,只需打电话

     nvm install node
    

(“node"是最新版本的别名)

现在你可以全局安装你的包,而不需要使用sudo或改变usr文件夹中node_modules的所有者。

经过长期的研究,我了解到mac OS安装angular cli不需要任何东西,只需使用sudo npm install -g @angular/cli,你的终端将提示密码,输入你的密码,然后继续安装cli。这对我很管用。

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

使用'sudo NPM install xyz'就可以了。

出现这种情况的原因是npm无法在本地运行时访问全局node_modules目录

sudo chown -R Name: /usr/local/lib/node_modules

如。

sudo chown -R developerayo: /usr/local/lib/node_modules

修复了问题,现在您可以再次运行您运行的命令。

类似于POsha的答案,但这是我在ubuntu 19上工作的方法

sudo npm i -g ngrok --unsafe-perm=true --allow-root

从这个链接

https://github.com/inconshreveable/ngrok/issues/429

如果你正在运行Linux(如:Arch)

# npm -g install packageName

默认情况下,该命令将包安装在/usr/lib/node_modules/npm下,并且需要root权限才能这样做。

允许用户范围的安装

要允许为当前用户安装全局包,请设置npm_config_prefix环境变量。npm和yarn都使用这个。

mkdir ~/.node_modules
cat ~/.profile
PATH="$HOME/.node_modules/bin:$PATH"
export npm_config_prefix=~/.node_modules

重新登录或更新源代码以更新更改。

您还可以为npm install指定--prefix参数。但是,不建议这样做,因为每次安装全局包时都需要添加它。

$ npm -g install packageName --prefix ~/.node_modules

所以你不需要chown文件夹权限

对于使用上述解决方案后仍无法解决问题的用户。试试这个

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

这应该能成功,干杯!

只要在npm命令前加上“sudo”即可。这是它。

如果在授予权限后仍然不工作,请尝试运行这些命令:

mkdir ~/.npm-global


npm config set prefix '~/.npm-global'


export PATH=~/.npm-global/bin:$PATH


source ~/.profile

最后用这个命令进行测试

# EYZ0

这对Windows不起作用。

在我的情况下,它工作,即我想要npm链接,所以当我点击sudo npm链接它工作

sudo npm install

,因为sudo给你超级用户级别的权限。 超级用户帐户通常被称为“管理员”。在Linux/Unix中,超级用户帐户通常命名为“root”

root用户拥有访问、修改或删除计算机上几乎所有文件的权限。普通用户帐户可以访问、修改或删除的文件要少得多。对普通帐户的限制可保护您的计算机免受未经授权或有害程序或用户的侵害。

它是100%的工作

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

下面的命令对我有用:

sudo npm install -g appium --unsafe-perm=true --allow-root

linux用户的简单解决方案,只需在你为npm运行的任何命令前添加sudo

Brew卸载节点

Brew安装节点

Sudo NPM install -g "your_package"——unsafe-perm = true allow-root

希望这能帮助到

解决此问题的最佳方法(因为不同设备的解决方案可能不同)是仔细阅读错误,以便找出需要write访问的文件夹。

在我的例子中,我必须给予/usr/local/lib/usr/local/bin权限。

仔细回顾一下:

https://ionicframework.com/docs/developing/tips#resolving-permission-errors

sudo chown -R $(whoami) /usr/local/{lib/node_modules,bin,share}
sudo chown -R $(whoami) ~/.npm ~/.npmrc

如果有人想让用户像根用户一样有访问权限,请检查这个https://support.apple.com/en-us/HT204012

如果用户帐户是帐户的所有者,这应该是最好的方法

在CentOS 8流中遇到

解决方案

(1/4)创建node_modules文件夹

# EYZ0

(2/4)与当前用户共同拥有

# EYZ0

(3/4)拥有bin文件夹

# EYZ0

(4/4)拥有share文件夹

# EYZ0

我得到了同样的错误,并解决它使用命令

Sudo NPM install -g expo-cli——unsafe-perm

在运行命令后的图像中

enter image description here

然后执行以下命令更新NPM

npm install -g npm@latest # EYZ0 < / p >

我很容易就解决了这个问题。

在我的mac上安装Ionic时也出现了类似的问题。

我执行命令

. sudo chown -R $USER /usr/local/路径