7

Ошибка: EACCES: отказано в доступе, доступ к '/usr/local/lib/node_modules'

1

Описание проблемы:

При попытке установить пакет через NPM возникает ошибка:

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.

Согласно сообщению об ошибке, у меня нет необходимых прав для доступа к каталогу /usr/local/lib/node_modules. Я пробовал выполнить установку с правами администратора, но проблема не исчезла.

Полный лог выполнения команды можно найти по пути:

/Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log

Как я могу решить эту проблему?

5 ответ(ов)

1

Я попробовал решение, предложенное в ответе от @okanda, но у меня оно не сработало.

Однако все заработало идеально, когда я применил его ко многим папкам, как упоминается в этой ветке: https://github.com/angular/angular-cli/issues/9676#issuecomment-464857493.

Вот команды, которые я использовал:

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

Вам нужно просто добавить пользователя к владельцам папки /usr/local/lib. Используйте следующую команду:

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

ПРАВКА:

Чтобы точно и только изменить владельца папки node_modules, попробуйте использовать эту команду перед предыдущей:

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

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

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

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

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

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

0

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

Сначала используйте следующую команду, чтобы определить, кто владеет этим файлом:

ls -la /usr/local/lib/node_modules

Вы увидите перечень файлов, один из которых будет выглядеть примерно так:

drwxr-xr-x   3 root    wheel  768 May 29 02:21 node_modules

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

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

id -un (в моем случае пользователь - Yamsol)

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

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

В моем случае, как вы уже знаете, пользователь - "yamsol", поэтому я выполню эту команду следующим образом:

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

Вот и все.

0

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

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

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь