Ответ 1
UPDATE. Существует лучший способ: изменить глобальный каталог npm
по умолчанию на пользовательский подкаталог, к которому у вас уже есть правильные разрешения, поэтому не нужно возиться с правами системного файла или правами собственности на первом месте.
Как рекомендовано в https://docs.npmjs.com/getting-started/fixing-npm-permissions:
- Создайте каталог для глобальных установок:
mkdir ~/npm-global
- Настройте npm для использования нового пути к каталогам:
npm config set prefix '~/npm-global'
- Откройте или создайте файл
~/.profile
(или~/.bash_profile
и т.д.) и добавьте эту строку (в конце файла):
export PATH=~/npm-global/bin:$PATH
См. также руководство Sindre Sorhus по теме: https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md
Теперь поняли, что не так:
В каталоге были неправильные разрешения - он не был доступен для записи (что было бы лучшим сообщением об ошибке, чем "доступно" ).
И поскольку он не был доступен для записи, временный каталог использовался и удалялся после каждого использования, поэтому вся загрузка должна запускаться снова и снова.
Решение состоит в том, чтобы установить права пользователя с помощью
sudo chown -R $USER <directory>
и никогда sudo npm
снова.
Кажется, что всякий раз, когда вы запускаете sudo npm
, все созданные подкаталоги получают неправильные разрешения, что впоследствии приведет к проблемам.