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?
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
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!
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
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.
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.
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
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é !
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:
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.
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.