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. Нет предупреждений, никаких подсказок, нет ничего. Он просто стирает директорию с фазы земли чистой, как будто ее там никогда не было. Попробуйте это на свой страх и риск.