Ошибка: 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

person hendra dedi    schedule 21.02.2018    source источник
comment
См. Официальное руководство от NPM о том, как решить эту проблему: docs.npmjs.com/   -  person Dzhuneyt    schedule 10.04.2019


Ответы (38)


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

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

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 OR whoami

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

sudo chown -R [owner]:[owner] /usr/local/lib/node_modules

OR

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

OR

sudo chown -R $USER /usr/local/lib/node_modules
person okandas    schedule 25.06.2018
comment
Были случаи, когда добавление sudo в команду также не работало. Это сработало для меня, и ответ должен быть принят. - person Niroj Shr; 05.12.2018
comment
Это должен быть принятый ответ из-за разрешений других файлов, которыми вы владеете, для доступа к глобально установленным модулям npm. - person metal_jacke1; 23.12.2018
comment
Отличный ответ. Я забыл об этом! Добавление к призыву, чтобы это был принят ответ. Не рекомендуется использовать sudo. Для Linux и MacOS это лучший подход IMO, предполагающий одного основного пользователя node.js на этой машине. Возможно, вы захотите показать новичкам, как изменить все дочерние подкаталоги, поскольку у них могут возникнуть проблемы с каскадными разрешениями. - person Rich Sadowsky; 16.01.2019
comment
Моя компания использует систему единого входа Microsoft Active Directory. Итак, в названии группы есть косая черта и пробел. Что делает это немного сложнее. Я использовал команду sudo chown -R myuser:Company\\Domain\ Users /usr/local/lib/node_modules. Чтобы правильно перечислить название группы, я сделал id -gn myuser. - person Patrick; 14.03.2019
comment
Это было полезно, но когда я запустил команду для смены владельца, я получил illegal group name. Поэтому я изменил команду на sudo chown -R ownerName: /usr/local/lib/node_modules, и она сработала. - person Midori; 18.03.2019
comment
Хотя это правильный ответ, я сталкивался с этой проблемой несколько раз, и лучшее решение - использовать nvm. таким образом вам не нужно будет менять владельца файлов с помощью chown. github.com/nvm-sh/nvm - person Roee; 23.07.2019
comment
по-прежнему возникает та же проблема, требуется ли перезагрузка системы? - person RollerCosta; 03.12.2019
comment
Вместо того, чтобы изменять разрешение, в документации рекомендуется установить npm с помощью nvm. См. stackoverflow.com/a/59575266/2311074 - person Adam; 03.01.2020
comment
команда: sudo chown -R $ USER / usr / local / lib / node_modules У меня полностью работает. - person Priti; 26.01.2020
comment
У меня работает 2-я команда sudo chown -R ownerName: /usr/local/lib/node_modules - person Arefe; 03.03.2020
comment
Я считаю, что первую команду следует изменить на ls -la /usr/local/lib/ | grep node_modules для ясности. Я запустил исходную команду ls -la /usr/local/lib/node_modules и обнаружил список файлов и папок с разрешениями и информацией о доступе для разных групп пользователей, но вывод на экран был для содержимого самой папки node_modules. Выходные данные drwxr-xr-x 3 root wheel 102 Jun 24 23:24 node_modules не возвращаются текущей командой. Не могли бы вы обновить его для будущих читателей? - person Shawesome; 08.07.2020
comment
Это не решает проблемы. Вам действительно следует следовать официальным советам, чтобы решить эту проблему на docs.npmjs.com/ - person Juergen; 21.02.2021
comment
Лучший способ решить эту проблему (поскольку решение может отличаться от одного устройства к другому) - внимательно прочитать ошибку, чтобы выяснить, какой папке требуется доступ для записи. В моем случае мне пришлось предоставить разрешения / usr / local / lib и / usr / local / bin. - person Ahmed El-Atab; 14.04.2021
comment
** СТОП ** ???? Делайте stackoverflow.com/a/55274930/234110 вместо того, чтобы возиться с разрешениями /usr/local/lib/node_modules - person Anand Rockzz; 22.07.2021

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

Сделайте резервную копию вашего компьютера. В командной строке в вашем домашнем каталоге создайте каталог для глобальных установок:

mkdir ~/.npm-global

Настройте npm для использования нового пути к каталогу:

npm config set prefix '~/.npm-global'

В предпочитаемом текстовом редакторе откройте или создайте

~/.profile

файл и добавьте эту строку:

export PATH=~/.npm-global/bin:$PATH

В командной строке обновите системные переменные:

source ~/.profile

Чтобы протестировать новую конфигурацию, установите пакет глобально без использования sudo

person Naveen Raju    schedule 21.03.2019
comment
На мой взгляд, это наименее деструктивный вариант. Это также рекомендуется на сайте npm. - person 17xande; 28.04.2019
comment
В качестве альтернативы, если вы не хотите делать npm config set prefix (особенно если вы пишете установщик без полномочий root), вы можете переопределить PREFIX env var или предоставить параметр --prefix, оба из которых эквивалентны npm config set prefix. (не уверен, что отменяет какие) - person SOFe; 16.09.2019
comment
Это отлично сработало для меня. На мой взгляд, этот ответ оставляет меньше места для деструктивных ошибок и очень прост для понимания и реализации. - person clockelliptic; 04.10.2019
comment
Это то, что искал! Спасибо. - person kuntam robo; 30.12.2019
comment
На самом деле это рекомендуемое решение, и оно является лучшим в долгосрочной перспективе. - person Al-Mothafar; 19.03.2020
comment
это действительно лучший ответ - person Miloslav Milo Janoušek; 27.11.2020
comment
На веб-сайте NPM рекомендуется переустановить npm с помощью диспетчера версий узлов. Это альтернатива. - person Chuck Le Butt; 14.01.2021

Все, что вам нужно сделать, это добавить ПОЛЬЗОВАТЕЛЯ к владельцу / local / lib.

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

РЕДАКТИРОВАТЬ:

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

sudo chown -R $USER /usr/local/lib/node_modules
person Nizar    schedule 07.03.2019
comment
Если будущие читатели не понимают разрешений, обратитесь к официальной документации NPM и исправьте проблему надлежащим образом. docs.npmjs.com/. В частности, будущим читателям, вероятно, следует переустановить npm с помощью диспетчера версий узлов (рекомендуется). - person ordonezalex; 21.06.2019
comment
Это довольно просто. Это также означает, что вам больше не нужно ни о чем беспокоиться в lib; у вас есть / usr / local / lib. - person Obinna Nnenanya; 06.08.2019
comment
Это вообще не хорошее решение. Выполняя выше chown, вы сильно рискуете разрушить структуру разрешений всей вашей файловой системы. - person Lars; 11.08.2019
comment
Эта команда испортила все мои разрешения. Нужно восстановить все заново. - person Azam Alvi; 15.09.2019
comment
Если быть точным, это не добавление владельца. Это смена владельца, что гораздо более разрушительно, чем просто добавление, и почти так же разрушительно, как sudo chmod -R 777 /. - person SOFe; 16.09.2019
comment
это ужасный ответ, поскольку /usr/local/ является пользователем root по соображениям безопасности, а /usr/local/lib/ вдвойне ... любой хакер, имеющий доступ к вашему компьютеру, сможет изменить стандартные библиотеки, установленные usr, после выполнения этой команды. - person Tcll; 24.08.2020
comment
НЕ ДЕЛАЙТЕ ЭТОГО! Это ужасное решение - не знаю, почему оно набрало 55 голосов. По сути, вы нарушите права доступа к файловой системе, и вам придется восстанавливать их путем переустановки или монтирования файловой системы на другом компьютере и восстановления. - person eat-sleep-code; 24.10.2020
comment
человек, это лучшая машина для разработки на Mac, мне не нужно беспокоиться о проблемах безопасности, это смешно, это машина для разработчиков - person JBarros35; 18.11.2020
comment
это просто убивает мой Linux, я больше не могу делать sudo !!! - person Nicolas; 06.12.2020
comment
Лучший способ решить эту проблему (поскольку решение может отличаться от одного устройства к другому) - внимательно прочитать ошибку, чтобы выяснить, какой папке требуется доступ для записи. В моем случае мне пришлось предоставить разрешения / usr / local / lib и / usr / local / bin. - person Ahmed El-Atab; 14.04.2021

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

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

sudo chown -R $USER /usr/local/lib/node_modules/
sudo chown -R $USER /usr/local/bin/
sudo chown -R $USER /usr/local/share/
person Quentin    schedule 12.11.2019
comment
Спасибо, мне помог этот ответ. Ubuntu 18.04.3 - person bakhti_UZB; 22.11.2019
comment
Раньше у меня работали другие решения, но на этот раз по какой-то причине потребовалось все это для рабочих папок. Спасибо. Mac версии 10.15.2 - person Amir5000; 17.12.2019
comment
Безопасно ли запускать на рабочем сервере? - person Cheezey; 26.12.2019
comment
У меня на выходе: dest: '/usr/local/bin/.npm-uJtxIR1m'. Так что я должен выбрать / usr / local / bin, потому что .npm .. кажется динамическим файлом / папкой? - person Timo; 05.03.2021
comment
ionicframework.com/docs/developing/ - person Ahmed El-Atab; 14.04.2021
comment
Спасибо, приятель, это отлично сработало для меня, / bin также противоречиво - person Felipe Candal Campos; 22.05.2021
comment
У меня то же самое, кроме этого решения ничего не работало. Большое спасибо! - person jocoders; 04.07.2021

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

вот так: sudo npm install

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

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

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

person Pradeep Kumar HK    schedule 10.04.2018
comment
избегайте использования sudo при установке пакетов npm. Чем глубже вы пойдете по такому пути, тем сложнее будет потом его исправить. Просто измените разрешения на папку npm, как указано в другом ответе, и живите лучше. - person Lukas Liesis; 21.10.2018
comment
Это может сработать, но со временем вызовет постоянные проблемы. Избегайте этого, если вы не хотите получать все виды ошибок, связанных с отказом в разрешении. Вроде отказано в папке кеша npm, отказано в установке и так далее. - person Lukas Liesis; 13.02.2019
comment
Этот ответ следует удалить, поскольку использование sudo перед установкой пакетов создает очень опасный прецедент, если пользователь не понимает разрешения. См. Первый ответ, в котором вы один раз меняете владельца местоположения основного узла. - person SeaWarrior404; 12.06.2019
comment
или, по крайней мере, это стандартная иллюзия в любом случае ... существует слишком много способов получить root-доступ с пользовательского уровня, который не был исправлен в течение многих лет, поэтому можно с уверенностью предположить, что любой злонамеренный пользователь, имеющий доступ к вашей машине, может легко получить доступ с правами root через любое установленное вами приложение с плохой защитой. - person Tcll; 24.08.2020
comment
ionicframework.com/docs/developing/ - person Ahmed El-Atab; 14.04.2021

Если вы столкнулись с этой проблемой на своем Mac. Выполните следующие действия.

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

ls -la /usr/local/lib/node_modules

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

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

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

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

id -un (in my case user is yamsol)

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

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

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

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

это оно.

person adnan javed    schedule 13.06.2019
comment
можно использовать $USER:$USER, чтобы не искать идентификатор пользователя - person venimus; 02.02.2021

Вы можете установить npm через диспетчер версий Node или установщик Node. В документах говорится:

Мы не рекомендуем использовать установщик Node, поскольку процесс установки Node устанавливает npm в каталог с локальными разрешениями и может вызвать ошибки разрешений при глобальном запуске пакетов npm.

NPM на самом деле рекомендует использовать диспетчер версий узла, чтобы избежать этих ошибок.

Поскольку у вас есть ошибка разрешения, вы, вероятно, установил npm через установщик узла, и теперь вам нужно переустановить его с помощью nvm (диспетчера версий узлов).

К счастью, это очень просто. Вам даже не нужно удалять текущую версию npm или Node.js.

Все, что вам нужно сделать, это

  1. Установите nvm. Для OSX или Linux Node используйте:

     curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
    

Это создает папку nvm в вашем домашнем каталоге.

потом

  1. Установите npm и node.js через nvm. Для этого просто позвоните

     nvm install node 
    

(узел - это псевдоним последней версии)

Теперь вы можете установить свой пакет глобально, не используя sudo и не меняя владельца node_modules в папке usr.

person Adam    schedule 03.01.2020
comment
спасибо за ответ Адам! просто интересно, какие могут быть некоторые возможные осложнения позже в процессе настройки сборки / среды? - person Archy Will He 何魏奇; 04.01.2020
comment
также, чтобы уточнить, для людей на fish, для правильной работы nvm нужна обертка для рыбы github.com/ FabioAntunes / fish-nvm - person Archy Will He 何魏奇; 04.01.2020
comment
@ 吖 奇 说 ARCHYSHUō Никогда не слышал о каких-либо сложностях при установке узла с помощью nvm. И поскольку это рекомендовано официальными документами, мне кажется, что это лучший способ :) - person Adam; 04.01.2020
comment
Спасибо! Я заметил, что есть новая второстепенная версия NVM, поэтому я думаю, что теперь команда должна быть curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash. Кроме того, мне пришлось закрыть и открыть Терминал, чтобы запустить nvm install stable. - person Johanna; 28.07.2020
comment
Как пользователь zsh мне пришлось сделать следующее. скопируйте вывод 'cat .bashrc | grep nvm 'в мой файл .zshrc. Тогда nvm был доступен в моем zsh. - person Totem; 04.02.2021
comment
Это самый простой и ясный ответ, который я когда-либо видел. Это позволяет избежать возни с разрешениями папки или принудительного использования sudo. Я думаю, это должен быть принятый ответ. Спасибо! - person Christian Gossain; 01.03.2021
comment
Это должен быть принятый ответ. - person Harvey; 25.03.2021

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

person Suhas Gavad    schedule 21.02.2018

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

sudo npm install -g [package-name]

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

sudo npm install -g typescript
person cinobili19    schedule 22.09.2018

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

нравится. Это решает мою проблему

sudo npm install -g expo-cli --unsafe-perm
person Furquan    schedule 22.05.2019
comment
@Furquan, Большое спасибо ... У меня сработало после того, как я попробовал разные решения. - person AzeTech; 28.06.2019
comment
@AzeTech, я рад, что это помогло: D - person Furquan; 11.10.2019

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

Также использование sudo для местных материалов - это действительно плохая рекомендация.

Исходная ссылка с www.competa.com не работает, так что это исходный подход оттуда:

npm config set prefix ~/.npm

# open your .bashrc (Linux) or .bash_profile (Mac) file for editing:
nano ~/.bashrc # for Linux
# or...
nano ~/.bash_profile # for Mac if you haven't created a .bashrc file

# add these lines:
export PATH="$PATH:$HOME/npm/bin"
export NODE_PATH="$NODE_PATH:$HOME/npm/lib/node_modules"

# save the file and then enter this command or logout and login to make the changes take effect:
. ~/.bashrc
# or...
. ~/.bash_profile

Вариант Б: используйте диспетчер версий, например NVM.

person angelcervera    schedule 26.01.2019

Если после предоставления разрешений он по-прежнему не работает, попробуйте выполнить следующие команды:

mkdir ~/.npm-global

npm config set prefix '~/.npm-global'

export PATH=~/.npm-global/bin:$PATH

source ~/.profile

и, наконец, проверьте с помощью этой команды

npm install -g jshint

Это не работает для Windows.

person Tripping    schedule 21.07.2020
comment
Если вы будете следовать этой последовательности, тогда третья строка будет непостоянной (не будет работать после перезапуска), а четвертая строка полностью неактуальна и ничего не сделает. Пожалуйста, смотрите ответ с наибольшим количеством баллов за правильное решение. - person Miloslav Milo Janoušek; 27.11.2020

Для пользователей NVM

sudo chown -R $USER /home/bereket/.nvm/versions/node/v8.9.1/lib/node_modules 

и

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

замените v8.9.1 версией используемого вами узла.

person bereket gebredingle    schedule 27.11.2019
comment
У меня это не сработало! По-прежнему появляется ошибка: npm ERR! Ошибка: EACCES: в разрешении отказано, переименуйте /home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules/.staging/npm-90fab7c7/node_modules/columnify/node_modules/wcwidth/node_modules/defaults Похоже, что-то с /.staging .. эта папка не существует после попытки установки. Вы можете мне с этим помочь? - person Samuel; 27.11.2019
comment
@ Самуэль, ты запускал эту команду? sudo chown -R $USER home/samuel/.nvm/versions/node/v8.10.0/lib/node_modules - person bereket gebredingle; 28.11.2019

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

sudo npm install -g create-react-app 

вместо npm install -g create-response-a pp.

person Nimmi Verma    schedule 01.06.2018
comment
цитируя @ Lukas - использование sudo при установке пакетов npm. Чем глубже вы пойдете по такому пути, тем сложнее будет потом его исправить. Просто измените разрешения на папку npm, как указано в другом ответе, и живите лучше. - person Bal Krishna Jha; 01.03.2020
comment
Не хорошая идея. Я бы предложил против. Таким образом вы откроете еще одну банку с червями. - person Jay Mayu; 27.08.2020

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

Аргумент -g или --global заставит 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: см. / Etc / 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)

IMHO, использование -g (также использующее sudo) похоже на hic sunt dracones, если вы не уверены в последствиях.

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

person ivanleoncz    schedule 06.03.2019

Мне удалось исправить проблему, используя следующее в Mac.

sudo npm install -g @aws-amplify/cli --unsafe-perm=true
person posha    schedule 22.10.2019
comment
ВНИМАНИЕ: --unsafe-perm=true представляет собой угрозу безопасности и позволяет узлу работать от имени пользователя root. - person Tcll; 24.08.2020

Это произошло из-за того, что npm не смог получить доступ к вашему глобальному node_modules каталогу локально, запустив

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

e.g.

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

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

person Ayo    schedule 05.03.2020
comment
У меня это работает. - person abhimuralidharan; 30.04.2021

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

person joe cutter    schedule 12.02.2020

Просто добавьте sudo перед командой npm. Вот и все.

person Farrukh Ahmed    schedule 02.06.2020
comment
Пожалуйста, не рекомендуйте это, так как это анти-шаблон и может испортить будущие установки. - person Andrei; 06.08.2020
comment
Вы можете пожалеть об этом позже ... - person Miloslav Milo Janoušek; 27.11.2020

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

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

or

sudo npm install -g json-server

это оно.

person Shahid jafrey    schedule 18.03.2019

Для 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

person Srilakshmy Krishnan    schedule 29.07.2019
comment
Я не хочу устанавливать скрипты узлов с помощью sudo! - person Ben Quigley; 14.02.2021

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

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

sudo -i

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

npm install -g create-react-app

Однако команда reactjs рекомендует использовать следующую команду вместо установки глобального пакета.

npx create-react-app app_name
person Fatema T. Zuhora    schedule 11.04.2019
comment
Использование sudo - рискованное предложение, некоторые пакеты могут быть безопасными, но другие могут начать делать что-то еще и воспользоваться предоставляемыми вами привилегиями root. sudo запускает последующие команды как суперпользователь - person rustyDev; 13.12.2019
comment
Некоторым пакетам, таким как create-react-app, требуются привилегии root для установки как глобальные пакеты; в противном случае вы не сможете его установить. Однако команда reactjs рекомендует использовать следующую команду npx create-react-app app_name вместо установки глобального пакета. - person Fatema T. Zuhora; 14.12.2019

Подобно ответу POsha, но это то, что сработало для меня на ubuntu 19

sudo npm i -g ngrok --unsafe-perm=true --allow-root

По этой ссылке

https://github.com/inconshreveable/ngrok/issues/429

person Jalpesh    schedule 16.03.2020

Для тех из вас, кто все еще не может решить проблему после использования вышеупомянутых решений. Попробуй это

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Это должно помочь, ура!

person dPac    schedule 26.05.2020

Это работа 100%

sudo chown -R $ (whoami) $ (префикс получения конфигурации npm) / {lib / node_modules, bin, share}

person Nalbandyan Artur    schedule 30.12.2020

Внимательно просмотрите это:

https://ionicframework.com/docs/developing/tips#resolving-permission-errors

sudo chown -R $(whoami) /usr/local/{lib/node_modules,bin,share}
sudo chown -R $(whoami) ~/.npm ~/.npmrc
person Ahmed El-Atab    schedule 14.04.2021
comment
спасибо, это единственный комментарий, который мне помог. - person monti; 22.04.2021

Мне удалось избавиться от этой проблемы, установив 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)
node -> стабильный (-> v10.12.0) (по умолчанию)
стабильный -> 10.12 (-> v10.12.0)

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

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

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

После выполнения приведенных выше команд вы сможете установить react / angular в Ubuntu.

person VishnuB    schedule 21.06.2019

Помогло только следующее:

sudo chown -R ownerName: /usr/local/lib/node_modules
person nicolas asinovich    schedule 04.09.2019

После долгих исследований я понял, что для Mac OS ничего не требуется для установки angular cli, просто используйте sudo npm install -g @angular/cli, ваш терминал запросит пароль, введите ваш пароль, он продолжит установку cli. У меня это сработало.

person Hemanth Paluri    schedule 19.01.2020

Используйте 'sudo npm install xyz', это сработает.

person Sohan    schedule 22.02.2020

Если вы используете Linux (например, Arch)

# npm -g install packageName

По умолчанию эта команда устанавливает пакет в / usr / lib / node_modules / npm и требует для этого прав суперпользователя.

Разрешить установку на уровне пользователя

Чтобы разрешить глобальную установку пакетов для текущего пользователя, установите переменную среды npm_config_prefix. Это используется как npm, так и yarn.

~/.profile
PATH="$HOME/.node_modules/bin:$PATH"
export npm_config_prefix=~/.node_modules

Повторно войдите в систему или используйте источник, чтобы обновить изменения.

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

$ npm -g install packageName --prefix ~/.node_modules

Таким образом, вам не нужно указывать разрешение на доступ к папке

person Duy Huy Hoang Do    schedule 31.03.2020

У меня работала команда ниже:

sudo npm install -g appium --unsafe-perm=true --allow-root
person Vasista TVN    schedule 27.01.2021

Простое решение для пользователей Linux, просто добавьте sudo перед любой командой, которую вы запускаете для npm

person Amit Mishra    schedule 19.02.2021

brew удалить узел

узел установки brew

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

Надеюсь, это кому-то поможет

person j.rmz87    schedule 12.04.2021

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

sudo chmod -R 777 node_modules

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

person coder618    schedule 14.06.2019

Лучший способ решить эту проблему (поскольку решение может отличаться от одного устройства к другому) - внимательно прочитать сообщение об ошибке, чтобы выяснить, к какой папке нужен write доступ.

В моем случае мне пришлось дать разрешения /usr/local/lib и /usr/local/bin.

person Ahmed El-Atab    schedule 14.04.2021

на случай, если кто-то захочет предоставить пользователю доступ как пользователю root, ознакомьтесь с https://support.apple.com/en-us/HT204012

это должен быть лучший подход, если учетная запись пользователя является владельцем учетной записи

person falade Femi    schedule 14.07.2021

в моем случае это работает, т.е. мне нужна ссылка npm, поэтому, когда я нажимаю ссылку sudo npm, она работает

sudo npm install

потому что sudo дает вам права доступа к уровням суперпользователя. Учетная запись суперпользователя обычно называется «Администратор». В Linux / Unix учетная запись суперпользователя обычно называется «root».

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

person SouMitya chauhan    schedule 06.11.2020
comment
Никогда не используйте sudo с npm. Это может позволить потенциально вредоносным пакетам захватить ваш компьютер. - person GalaxyCat105; 12.11.2020
comment
@ GalaxyCat105 Ty за это. Странно, потому что во время развертывания меня, например, учили судить буквально все на экземплярах EC2. Я сам запутался в некоторых странных проблемах с разрешениями. Мне может потребоваться прекратить работу экземпляра и начать все заново. Вы рекомендуете, например, из новой коробки Ubuntu устанавливать только node, npm, nodemon, nginx, git all как пользователь без полномочий root? Если я использую sudo, например, после получения репозитория git и запуска sudo npm install я сталкиваюсь с проблемами EACCES в отношении некоторых пакетов (например, bcrypt) ... необходимо отсортировать эти концепции. - person twknab; 24.11.2020