NPM не может устанавливать зависимости. Попытайтесь разблокировать что-то, что не было заблокировано.
Я пытаюсь запустить установку npm в моем файле package.json, но у меня много проблем. Он продолжает говорить "Ошибка: попытаться разблокировать XXX, который не был заблокирован" во всех моих зависимостях. Здесь один из них:
Error: Attempt to unlock [email protected]~0.6.4, which hasn't been locked
at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
at Object.oncomplete (fs.js:107:15)
Если я попытаюсь запустить его как sudo, он, похоже, получит еще больше и начнет установку некоторых пакетов, но вместо этого появятся новые ошибки:
> [email protected] postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
node.js:811
var cwd = process.cwd();
^
Error: EACCES, permission denied
at Function.startup.resolveArgv0 (node.js:811:23)
at startup (node.js:58:13)
at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back [email protected] { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'
Недавно я обновил свои установки node и npm. Так что, возможно, это имеет какое-то отношение к этому. Кроме того, большая часть моего развития была в офисе, и сегодня я работаю над VPN, так что, возможно, это тоже имеет к этому отношение.
Любые идеи?
Ответы
Ответ 1
Согласно фотоснимке при: https://github.com/npm/npm/issues/4815
Запустите эти команды в окне терминала (обратите внимание - НЕ замените часть USER... это команда linux, чтобы получить вашего пользователя!):
sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/local/lib/node_modules
... и... если вы на mac (как и я), и по-прежнему видите ошибки после запуска этих команд, тогда запустите этот последний, и вы должны быть хорошими. (Порекомендуйте попробовать попробовать, прежде чем делать это. Мне не нравится изменять разрешения в каталоге ENTIRE/usr/local, если это действительно не представляется необходимым!)
sudo chown -R $USER /usr/local
Ответ 2
Сегодня я работал с коллегой и выяснил, в чем проблема. Моя папка ".npm" в моем домашнем каталоге принадлежала пользователю root, а не мне. Я не уверен, что случилось с этим. Возможно, я установил node или npm в качестве администратора root в какой-то момент. В любом случае я просто запустил sudo chown -R [username] .npm
, и я наконец смог снова запустить команды npm install
из моих проектов!
Ответ 3
В моем случае проблема вызывала npm с пользователем, у которого нет каталога HOME, поэтому, например, следующая команда не сработает:
sudo -u someUser npm install
Решение состоит в том, чтобы предоставить каталог HOME, где someUser
имеет доступ на запись:
sudo -u someUser HOME=/some/directory npm install
Ответ 4
Имел ту же проблему и исправил ее, изменив передачу в соответствии с принятым ответом:
sudo chown -R $USER ~/.npm
Однако следует избегать второй команды, поскольку она понижает разрешения системного ресурса (sudo chown -R $USER /usr/local/lib/node_modules
). Не хорошая идея.
Для записи: "usr" в /usr/local
означает Unix System Resources.
Ответ 5
Ничего из этого не сработало для меня. Я должен был запустить буквально как root, выполнив следующее:
sudo su -
sudo npm install forever -g
Затем пакет устанавливается на Linux Ubuntu 14.04.
Ответ 6
Следующая команда должна устранить проблемы с разрешением:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Здесь вы можете прочитать о других официально рекомендованных решениях:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
Ответ 7
Мое решение:
sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE
в моем случае было:
sudo chown -R $USER /usr/local/lib/node_modules/appium/
Но у меня была такая же проблема, наконец, после
npm cache clean
это сработало!
Ответ 8
У меня была такая же проблема, и я пытался часами исправлять разрешения/права на файлы и каталоги, связанные с npm, но не повезло с этим.
Неожиданно я обнаружил, что у меня есть файл ~/.npmrc
с записью cache
, указывающий на несуществующий каталог. Удалено это свойство cache
, чтобы использовать местоположение кэша по умолчанию и теперь оно разрешено.
Ответ 9
Отказ
Я Windows. Тем не менее, мы с моей командой столкнулись с рядом проблем, связанных с ошибками установки npm.
Проблемы
Ниже приведен список извлеченных уроков и возможное радикальное решение, которое всегда спасало нас:
- node_modules, локальный каталог установки npm становится защищенным от изменения недостатком ОС, например, невозможностью обработать пути длиной более 255 символов. li >
- Если папка стирается с помощью инструмента командной строки, она все равно может выглядеть так, как если бы папка существовала в проводнике, когда при попытке получить к ней доступ допускает несколько ошибок разрешения.
- В зависимости от вашего антивируса и/или локального менеджера политик вы можете создать папку node_modules, а позднее - доступ или права доступа к ней, что приведет к ряду ошибок установки.
-
Включить журналы npm, чтобы получить дополнительную информацию о возможных проблемах с:
npm install --loglevel verbose
Radical
Установите rimraf глобально
npm install rimraf -g
Запустите rimraf на node_modules:
rimraf yourDir/node_modules
Затем попробуйте запустить:
npm install
Внимание!
Или нет. Будьте предельно осторожны с тем, что следует за командой rimraf
. Нет предупреждений, никаких подсказок, нет ничего. Он просто стирает директорию с фазы земли чистой, как будто ее там никогда не было. Попробуйте это на свой страх и риск.