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

时间:2016-03-12 06:55:10

标签: node.js macos npm eslint

我正试图通过以下方式安装ESLint npm:

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'作品,有时它不会...我怎么能一劳永逸地解决这个问题呢?

10 个答案:

答案 0 :(得分:45)

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

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

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

答案 1 :(得分:28)

npm docs: Fixing npm permissions中已详细记录了此问题。

您有两种解决方案:

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

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

选项2 :使用能够为您处理此问题的包管理器

brew install node

答案 2 :(得分:4)

尝试此命令sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules}

这将改变npm和其他一些工具(lib / node_modules,bin和share)使用的子文件夹的所有权。

<强>更新

按照其他用户的建议关注此 link

答案 3 :(得分:3)

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

就足够了。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

要仅安装引起问题的软件包:

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

答案 6 :(得分:0)

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

示例:

import React, { Component } from 'react';
import { Platform, StyleSheet, View, Text } from 'react-native';


export default class App extends Component {

  render() {

    return (
      <View style={styles.container}>
        <Text style={[styles.setFontSize,styles.setColorRed]}> React Native Font example 1</Text>
        <Text style={[styles.setFontSize,styles.setColorPink]}> React Native Font example 2</Text>
        <Text style={[styles.setFontSize,styles.setColorPurple]}> React Native Font example 3</Text>
        <Text style={[styles.setFontSize,styles.setColorBlue]}> React Native Font example 4</Text>
      </View>
    );
  }
}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center'
  },
  setFontSize: {
    fontSize: 20,
    fontWeight : 'bold' 
  },
  setColorRed : {
    color: '#f44336'
  },
  setColorPink :{
    color: '#e91e63'
  },
  setColorPurple :{
    color: '#9c27b0'
  },
  setColorBlue :{
    color: '#2196f3'
  },
});

如果我使用过sudo,则找不到创建 postinstall.js

的错误
  

错误:EACCES:权限被拒绝

答案 7 :(得分:0)

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

足以运行。

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

在运行时遇到相同的错误

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

要修复,请运行以下

sudo apt update
sudo apt upgrade -y

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