Ошибка: EACCES: разрешение отклонено при попытке установить ESLint с использованием npm

Я пытаюсь установить 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" работает, иногда это не так... Как я могу исправить это раз и навсегда?

Ответ 1

Используйте флаги --unsafe-perm=true и --allow-root с установкой npm, как показано ниже: -

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

это сработало как очарование для меня.

Ответ 2

Эта проблема хорошо описана в документации npm: исправление прав доступа npm.

У вас есть 2 решения:

Вариант 1: изменить каталог по умолчанию npm на скрытый каталог в вашей домашней папке

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

Вариант 2: используйте менеджер пакетов, который позаботится об этом за вас

brew install node

Ответ 3

Попробуйте эту команду sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules}

это изменит владение подпапками, используемыми npm и некоторыми другими инструментами (lib/node_modules, bin и share).

Обновить

Перейдите по этой ссылке, как предложено другими пользователями.

Ответ 4

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

достаточно.

Ответ 5

Выполнение следующей команды решило эту проблему для меня при установке мой packages.json:

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

Чтобы установить только пакет, вызвавший проблему:

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

Ответ 6

Используйте sudo перед tns, и это работа для меня

Пример:

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

если я использовал sudo, то не найдена ошибка, как при создании postinstall.js

Error: EACCES: permission denied