Ошибка: 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
, а затем установив узел на последнюю версию.
- Установите
nvm
с помощью curl
(для последней версии перейдите на nvm.sh)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- Список доступных версий узлов
nvm ls
v10.12.0
по умолчанию → v10.12 (-> v10.12.0)
узел → стабильный (-> v10.12.0) (по умолчанию)
стабильный → 10.12 (-> v10.12.0)
...
- Выберите, какую версию узла использовать
nvm use v10.12
nvm несовместим с параметром префикса конфигурации npm: в настоящее время установлено значение ""
- Запустите это, чтобы сбросить опцию:
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