web-dev-qa-db-fra.com

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

J'ai essayé de lancer une installation npm sur mon fichier package.json, mais je rencontre beaucoup de problèmes. Il continue à dire "Erreur: tentative de déverrouiller XXX, qui n'a pas été verrouillé" sur toutes mes dépendances. En voici un:

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 commence à installer certains paquets, mais quelques nouvelles erreurs apparaissent à la place:

> [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'

J'ai récemment mis à jour mes installations de nœud et npm. Alors peut-être que cela a quelque chose à voir avec cela. En outre, l'essentiel de mon développement a eu lieu au bureau et, aujourd'hui, je travaille sur un réseau privé virtuel (VPN). Cela a peut-être aussi quelque chose à voir avec cela.

Des idées?

192
TJ Kirchner

Selon photusenigma à: https://github.com/npm/npm/issues/4815

Exécutez ces commandes dans une fenêtre de terminal (note - NE remplacez PAS la partie $ USER ... c’est une commande linux pour obtenir votre utilisateur!):

Sudo chown -R $USER ~/.npm
Sudo chown -R $USER /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, lancez cette dernière et vous devriez être bon. (Nous vous recommandons d'essayer les tests avant de faire celui-ci. Je n'aime pas modifier les autorisations du répertoire ENTIER/usr/local à moins que cela ne semble vraiment nécessaire!)

Sudo chown -R $USER /usr/local
421
alexoviedo999

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

152
TJ Kirchner

Dans mon cas, le problème appelait npm avec un utilisateur qui ne possédait pas de répertoire HOME. Par exemple, la commande suivante échouait:

Sudo -u someUser npm install

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

Sudo -u someUser HOME=/some/directory npm install
21
Bjarke Walling

Avait le même problème et résolu en changeant les persmissions selon la réponse acceptée:

Sudo chown -R $USER ~/.npm

Cependant, la deuxième commande doit être évitée car elle rétrograde les autorisations d'une ressource système (Sudo chown -R $USER /usr/local/lib/node_modules). Pas une bonne idée.

Pour mémoire: "usr" dans /usr/local signifie ressources système Unix.

11
chris

Rien de tout cela n'a fonctionné pour moi. Je devais courir littéralement en tant que root en procédant comme suit:

Sudo su -
Sudo npm install forever -g

Ensuite, le paquet installé sur Linux Ubuntu 14.04.

4
occasl

La commande suivante devrait résoudre les problèmes d'autorisation:

Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Vous pouvez lire sur une autre solution officiellement recommandée ici:

https://docs.npmjs.com/getting-started/fixing-npm-permissions

2
Tim White

Ma solution:

Sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE

dans mon cas était:

Sudo chown -R $USER /usr/local/lib/node_modules/appium/

Mais je commençais à avoir le même problème, enfin après

npm cache clean

ça a marché !

1
mayo

Clause de non-responsabilité

Je suis un utilisateur Windows . Cependant, mon équipe et moi-même avons rencontré un certain nombre de problèmes concernant les erreurs d'installation de npm.

Problèmes

Ce qui suit est une liste des leçons apprises et une possible solution radicale qui nous a toujours sauvés:

  1. node_modules , le répertoire d’installation local npm est protégé contre la modification par un raccourci du système d'exploitation, comme l'impossibilité de traiter des chemins plus longs que et 255 caractères.
  2. Si le dossier est effacé à l’aide d’un outil de ligne de commande, il se peut qu’il apparaisse comme si le dossier existe dans l’explorateur et que lorsqu’il tente d’y accéder, il génère un certain nombre d’erreurs d’autorisation.
  3. En fonction de votre antivirus et/ou de votre gestionnaire de règles local, vous pourrez peut-être créer le dossier node_modules et plus tard les accès ou les autorisations qui lui sont relégués, ce qui entraînera un certain nombre de modifications. erreurs d'installation.
  4. Activez les journaux npm pour obtenir des informations supplémentaires sur les problèmes possibles concernant:

    npm install --loglevel verbose

radical

Installer rimraf globalement

 npm install rimraf -g

Exécutez rimraf sur node_modules :

rimraf yourDir/node_modules

Ensuite, essayez de courir:

npm install

Attention!

Ou l'absence de. Faites très attention à ce qui suit la commande rimraf. Il n'y a pas d'avertissement, pas d'invite, il n'y a rien. Cela efface simplement le répertoire de la phase de la terre, comme s'il n'y avait jamais été. Essayez-le à vos risques et périls.

0
Wilmer Saint

J'ai eu le même problème et j'ai essayé de réparer l'autorisation/la propriété des fichiers et des répertoires liés à npm pendant des heures mais je n'ai pas eu de chance avec ça.

Soudain, j'ai découvert que j'avais le fichier ~/.npmrc avec l'entrée cache pointant vers un répertoire non existant. Suppression de cette propriété cache pour utiliser l'emplacement de cache par défaut, qui est maintenant résolue.

0
cheolgook