Ошибка: EACCES: разрешение отклонено, получить доступ к '/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

Ответы

Ответ 1

изменить права доступа к файлу.. как это

сначала проверьте, кому принадлежит каталог

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?

id -un

ИЛИ

whoami

затем смените владельца

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

Ответ 2

попробуйте добавить sudo перед любой командой, которую вы пытаетесь выполнить.

например: sudo npm install

Использование sudo с помощью команды в Linux/UNIX обычно повышает ваши права на уровни суперпользователя. В Windows учетная запись суперпользователя обычно называется "Администратор". В Linux/Unix учетная запись суперпользователя обычно называется "root".

У пользователя root есть разрешение на доступ, изменение или удаление почти любого файла на вашем компьютере. Обычные учетные записи пользователей могут получать, изменять или удалять гораздо меньше файлов. Ограничения на обычную учетную запись защищают ваш компьютер от несанкционированных или вредоносных программ или пользователей. В некоторых процессах вам необходимо выполнить действия над файлами или папками, к которым у вас обычно нет разрешений для доступа. Одним из таких действий является установка программы, доступной каждому из пользователей.

В вашем случае запуск команды установки с помощью sudo дает вам права суперпользователя и позволяет вам изменять файлы, которые ваш обычный пользователь не имеет разрешения на изменение.

Ответ 3

Все, что вам нужно сделать, это добавить пользователя USER владельцу /local/lib

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

Ответ 4

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

Сделайте резервную копию вашего компьютера. В командной строке в своем домашнем каталоге создайте каталог для глобальных установок: mkdir ~/.npm-global Настройте npm для использования нового пути к каталогу: npm config set prefix '~/.npm-global' В предпочитаемом вами текстовом редакторе, откройте или создайте файл ~/.profile и добавьте export PATH=~/.npm-global/bin:$PATH строку: export PATH=~/.npm-global/bin:$PATH В командной строке обновите системные переменные: source ~/.profile Чтобы протестировать новую конфигурацию, установить пакет глобально без использования sudo

Ответ 5

При установке глобальных пакетов в ubuntu вам нужны специальные права на запись при записи в папку usr/bin. Это по соображениям безопасности. Таким образом, каждый раз, когда вы устанавливаете глобальный пакет, используйте:

sudo npm install -g [package-name]

Для вашего конкретного случая это будет:

sudo npm install -g typescript

Ответ 6

Вы должны изменить владельца маршрутов, где выполняется установка, на текущего пользователя:

sudo chown -R 'id -un' /usr/local/lib
sudo chown -R 'id -un' /usr/local/bin   

Ответ 7

Похоже, вы столкнулись с проблемами разрешения. Если вы устанавливаете npm-packages возможно, вы получаете ошибку EACCES при попытке установить пакет глобально. Это означает, что у вас нет разрешения на запись в каталоги, которые npm использует для хранения глобальных пакетов и команд.

Попробуйте sudo chmod u+x -R 775 ~/.npm команды: sudo chmod u+x -R 775 ~/.npm и sudo chown $USER -R ~/.npm или вы можете просто запустить любую команду npm с помощью sudo, которая должна решить вашу проблему.

Если вы устанавливаете npm-package локально, вы должны находиться в локальном каталоге проекта и попробовать запустить команду sudo npm install <pkg-name> для установки необходимого пакета. Цель использования sudo состоит в том, что он изменит права вашего владельца, чтобы вы могли сделать текущего пользователя авторизованным для запуска команд npm.

Я бы порекомендовал вам взглянуть на https://docs.npmjs.com/getting-started/fixing-npm-permissions

Ответ 8

Используйте эту команду для установки npm от имени пользователя sudo:

sudo npm install -g create-react-app 

вместо npm установите -g create-Reaction-a pp.

Ответ 9

Будьте осторожны со всеми ответами, которые меняют владельца всех каталогов в /usr/local. По сути, не путайте систему linux !!!

Я думаю, что лучше всего использовать собственную папку для поиска всех глобальных пакетов: https://www.competa.com/blog/how-to-run-npm-without-sudo/

Ответ 10

Я пытался установить реагировать экспо и кроме sudo мне пришлось добавить --unsafe-perm

как это. Это решает мою проблему

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

Ответ 11

Если вы столкнулись с этой проблемой на вашем Mac. Следуй этим шагам

Сначала проверьте, кто является владельцем этого файла, используя команду ниже

  ls -la /usr/local/lib/node_modules

Вы найдете файл, как показано ниже, один из них ниже

корневое колесо drwxr-xr-x 3 768 29 мая 02:21 node_modules

Вы заметили, что указанный выше файл принадлежит пользователю root, для внесения изменений внутри вам необходимо изменить владельца пути.

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

  id -un                    (in my case user is yamsol)

и затем вы можете изменить, вызвав эту команду (просто замените ваше имя пользователя на ownerName)

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

в моем случае, как вы знаете, пользователь "Ямсоль", я буду вызывать эту команду таким образом

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

вот и все.

Ответ 12

Похоже, вы пытались установить пакет npm глобально, а не локально, как описывает команда man npm install:

Лобальный аргумент -g или - -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, вы должны использовать sudo (если у вашего пользователя есть привилегии sudo: см. /npm install express-generator -g/sudoers) при выполнении npm install express-generator -g, но на самом деле, это не очень хорошая идея, возможно, вызывает проблемы с разрешениями.

УВЕДОМЛЕНИЕ

Существуют инструкции по установке express-generator с -g, чтобы сценарий express-cli.js доступен по системному пути, но вы также можете использовать локально установленный сценарий, расположенный в node_modules если ваш проект npm:

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

Если сообщение типа /usr/bin/env: 'node: такой файл или каталог не отображаются, установите nodejs-legacy (Debian/Ubuntu)

ИМХО, использование -g (также с использованием sudo) похоже на hic sunt dracones, если вы не уверены в последствиях.

Для дополнительной информации:

Ответ 13

Просто вы можете сменить владельца или просто использовать sudo перед тем, как выполнить команду

sudo chown -R [owner]:[owner]/usr/local/lib/node_modules (смена владельца)

или же

sudo npm install -g json-server

это.

Ответ 14

Для установки React вам необходимо разрешение уровня суперпользователя. В Linux/Unix учетная запись суперпользователя обычно называется "root".

Чтобы получить привилегию суперпользователя, просто запустите следующую команду на своем терминале:

sudo -i

а затем просто запустите команду для установки React:

npm install -g create-react-app

Ответ 15

Для Linux/Ubuntu, если команда

npm install -g <package_name>

npm WARN deprecated [email protected]: 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

Исправлено: установка с правами root

sudo npm install <package_name> -g

Ответ 16

Я использовал sudo, но это не решило проблему, я исправил проблему, изменив разрешение папки node_modules,

sudo chmod -R 777 node_modules

Если вы хотите, вы можете заменить 777 любым другим кодом, если вы не устанавливаете разрешение для всех пользователей/групп.

Ответ 17

Я смог избавиться от этой проблемы, установив nvm, а затем установив узел на последнюю версию.

  1. Установите nvm с помощью curl (для последней версии перейдите на nvm.sh)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  1. Список доступных версий узлов
nvm ls

v10.12.0
по умолчанию → v10.12 (-> v10.12.0)
узел → стабильный (-> v10.12.0) (по умолчанию)
стабильный → 10.12 (-> v10.12.0)
...

  1. Выберите, какую версию узла использовать
nvm use v10.12

nvm несовместим с параметром префикса конфигурации npm: в настоящее время установлено значение ""

  1. Запустите это, чтобы сбросить опцию:
nvm use --delete-prefix v10.12.0

Выполнив приведенные выше команды, вы сможете установить response/angular в Ubuntu.

Ответ 18

Я нахожу подобную проблему с модулем webpack. Мое решение - удалить папку node_modules rm -rf node_modules и запустить npm я без sudo - установка должна работать.

Ответ 19

Помогло только в этом:

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

Ответ 20

мне поменялось разрешение на доступ к каталогу bin внутри каталога usr.

cd.. && cd.. && sudo chmod 777./bin/

Ответ 21

Я смог решить проблему, используя следующую информацию в Mac.

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