错误:EACCES:尝试使用 npm 安装 ESLint 时权限被拒绝

Posted

技术标签:

【中文标题】错误:EACCES:尝试使用 npm 安装 ESLint 时权限被拒绝【英文标题】:Error: EACCES: permission denied when trying to install ESLint using npm 【发布时间】:2016-06-27 13:18:25 【问题描述】:

我正在尝试使用 npm 安装 ESLint:

npm install -g eslint

但是我收到以下错误:

Deans-Air:~ deangibson$ npm install -g eslint
npm ERR! tar.unpack untar error /Users/deangibson/.npm/eslint/2.4.0/package.tgz
npm ERR! Darwin 15.3.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "eslint"
npm ERR! node v4.2.3
npm ERR! npm  v2.14.7
npm ERR! path /usr/local/lib/node_modules/eslint
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/eslint'
npm ERR!     at Error (native)
npm ERR!   [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/eslint']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/usr/local/lib/node_modules/eslint',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/eslint',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/deangibson/npm-debug.log

老实说,我每次尝试使用 npm 安装某些东西时都会得到这个。有时使用 'sudo' 有效,有时却无效……我怎样才能一劳永逸地解决这个问题?

【问题讨论】:

【参考方案1】:

这个问题在npm docs: Fixing npm permissions中有详细的记录。

您有 2 个可用的解决方案:

选项 1:将 npm 的默认目录更改为您的主文件夹中的隐藏目录

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile

选项 2:使用包管理器为您解决此问题

brew install node

【讨论】:

选项 2 运行良好,但我使用了 ~/.npm 目录,因为我的 dotfiles 已经配置了该位置(但我忘记了!) 支持选项 2。我早就应该这样做了:sweat-smile: 如果你使用选项一,你可能会遇到这个问题,所以我完全不推荐这个:askubuntu.com/questions/452860/…root用户应该拥有/user/bin 选项 4:使用 Yarn 和 sudo yarn global add <package-name> 安装 不要使用选项 1,它会毁了你的 sudo。【参考方案2】:

使用--unsafe-perm=true--allow-root 标志和npm 安装如下:-

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

它对我来说就像魅力一样。

【讨论】:

美女!谢谢! 如果是本地包,显然不要使用 g。它会对结果产生很大影响 我从 3 小时开始寻找这个解决方案。谢谢兄弟:) 这适用于macos。也许它不安全,但它是唯一对我有用的解决方案。 实际使用它并不安全,因为全局安装 npm 模块需要你使用 sudo,原因是它在根目录中创建文件【参考方案3】:
sudo npm install -g --unsafe-perm=true eslint

就足够了。

【讨论】:

【参考方案4】:

在安装我的 packages.json 时运行以下命令为我解决了这个问题:

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

仅安装导致问题的软件包:

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

【讨论】:

【参考方案5】:

在 tns 之前使用 sudo,它对我有用

例子:

sudo tns create Tekmo --template tns-template-hello-world

如果我使用过 sudo 则找不到像创建 postinstall.js 之类的错误

错误:EACCES:权限被拒绝

【讨论】:

【参考方案6】:

为MAC用户提供项目目录文件夹的访问权限

    右键项目目录文件夹 选择获取信息 提供访问权限 - 应用于封闭项

【讨论】:

【参考方案7】:

运行时出现同样的错误

npm install -g @ionic/cli native-run cordova-res

要修复,请运行以下命令

sudo apt update
sudo apt upgrade -y

我已经阅读了已经存在的解决方案,但认为还有其他东西,UNSAFE 不是一个安全的关键字,哈哈。在使用 --unsafe-perm=true 运行命令时,我注意到它正在下载似乎是更新二进制文件的内容。 所以,我更新并再次尝试。

【讨论】:

【参考方案8】:

您可以使用sudo su 以root 身份登录。首先在您的终端上运行命令sudo su,然后输入您的登录密码。最后执行你期望的命令npm install -g eslint。它对我有用。

【讨论】:

以上是关于错误:EACCES:尝试使用 npm 安装 ESLint 时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

NPM 不会在 Mac 上安装任何包。新的,干净的构建。 `EACCES` 和其他错误

NPM/Cordova 权限错误:EACCES:权限被拒绝,scandir

npm 错误!错误:EACCES:权限被拒绝,访问“/Users/patrikkozak/.npm-global/lib/node_modules/@vue/cli”

错误:EACCES:权限被拒绝,mkdir '/.npm'

npm permission denied错误npm ERR! Error: EACCES: permission denied, access

升级 npm,npm ERR!错误:EACCES:权限被拒绝