194 votes

NPM ne peut pas installer les dépendances - Tentative de déverrouiller quelque chose qui n'a pas été verrouillé

J'ai essayé d'exécuter une installation npm sur mon fichier package.json, mais j'ai beaucoup de mal. Il continue à dire "Error : Attempt to unlock XXX, which hasn't been locked" sur toutes mes dépendances. Voici l'une d'entre elles :

Error: Attempt to unlock tbd@~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)

Si j'essaie de l'exécuter en tant que sudo, il semble aller plus loin et commencer à installer certains paquets, mais de nouvelles erreurs apparaissent à la place :

> chokidar@0.8.1 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  karma@0.10.9 { [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'

J'ai récemment mis à jour mes installations node et npm. Cela a donc peut-être quelque chose à voir avec cela. De plus, la plupart de mes développements ont eu lieu au bureau et aujourd'hui je travaille sur VPN, ce qui a peut-être aussi un rapport avec le problème.

Des idées ?

421voto

alexoviedo999 Points 411

Comme par photusenigma à : https://github.com/npm/npm/issues/4815

Exécutez ces commandes dans une fenêtre de terminal (note - ne remplacez pas la partie whoami... c'est une commande linux pour obtenir votre utilisateur !)

sudo chown -R `whoami` ~/.npm
sudo chown -R `whoami` /usr/local/lib/node_modules

...et...si vous êtes sur un mac (comme moi), et que vous voyez toujours des erreurs après avoir exécuté ces commandes, alors exécutez la dernière et vous devriez être bon. (Je vous recommande de faire un test avant d'exécuter cette commande. Je n'aime pas changer les permissions sur le répertoire ENTIRE /usr/local à moins que cela ne semble vraiment nécessaire).

sudo chown -R `whoami` /usr/local

153voto

TJ Kirchner Points 1249

J'ai travaillé avec un collègue cet après-midi et j'ai trouvé quel était le problème. Mon dossier ".npm" dans mon répertoire personnel appartenait à l'utilisateur Root et non à moi-même. Je ne suis pas sûr de ce qui s'est passé pour causer cela. Peut-être ai-je installé node ou npm en tant qu'administrateur Root à un moment donné. Dans tous les cas, j'ai simplement exécuté sudo chown -R [username] .npm et j'ai enfin pu lancer npm install commandes de mes projets à nouveau !

21voto

Bjarke Walling Points 51

Dans mon cas, le problème était d'invoquer npm avec un utilisateur qui n'a pas de répertoire HOME, donc par exemple la commande suivante échouerait :

sudo -u someUser npm install

La solution consiste à fournir un répertoire HOME, dans lequel someUser a un accès en écriture :

sudo -u someUser HOME=/some/directory npm install

4voto

occasl Points 740

Rien de tout cela n'a fonctionné pour moi. J'ai dû exécuter littéralement en tant que Root en faisant ce qui suit :

sudo su -
sudo npm install forever -g

Puis le paquet s'est installé sur Linux Ubuntu 14.04.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X