J'ai essayé d'exécuter une installation npm sur mon fichier package.json, mais j'ai beaucoup de problèmes. Il continue de dire "Erreur: Tentative de déverrouillage de 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 commencer à installer certains packages, 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 de nœuds et de npm. Alors peut-être que cela a quelque chose à voir avec ça. De plus, la majeure partie de mon développement a été au bureau et aujourd'hui, je travaille sur VPN, alors peut-être que cela a aussi quelque chose à voir avec cela.
Des idées?
node.js
npm
karma-runner
TJ Kirchner
la source
la source
Réponses:
Selon photusenigma sur: 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!):
... et ... si vous êtes sur un Mac (comme je le suis) et que vous voyez toujours des erreurs après avoir exécuté ces commandes, exécutez cette dernière et vous devriez être bon. (Je vous recommande d'essayer avant de faire celui-ci. Je n'aime pas changer les autorisations sur le répertoire ENTIRE / usr / local sauf si cela semble vraiment nécessaire!)
la source
sudo chown -R `whoami` /usr/lib/node_modules/
chown
n'a pas changé les autorisations~/.npm/_locks
pour moi. J'ai fait travailler le mien en courantsudo chown -R myname ~/.npm/_locks
sudo chown -R $USER /usr/local/lib/node_modules
? Je l'ai couru avant de lire que ce n'était pas une bonne idée ..J'ai travaillé avec un collègue cet après-midi et compris quel était le problème. Mon dossier ".npm" dans mon répertoire personnel appartenait à l'utilisateur root au lieu de moi-même. Je ne sais pas ce qui est arrivé à cause de cela. Peut-être que j'ai installé node ou npm en tant qu'administrateur root à un moment donné. En tout cas, je viens de courir
sudo chown -R [username] .npm
et j'ai enfin pu exécuter à nouveau lesnpm install
commandes de mes projets!la source
~/tmp/
, ou quel que soit l'emplacement utilisé par Node comme emplacement temporaireDans mon cas, le problème invoquait npm avec un utilisateur qui n'a pas de répertoire HOME, donc par exemple la commande suivante échouerait:
La solution est de fournir un répertoire HOME, avec
someUser
accès en écriture:la source
sudo -u someUser -i
, ce qui démarre un nouveau shell de connexion. J'ai examiné cela un peu plus et le code de mise en cache dans npm utilise la variable npm.cache, que je suppose par défaut$HOME/.npm/
. sudo peut également avoir un comportement différent avec ce à quoi la variable HOME est définie en fonction de la configuration et de la présence ou de l'absence d'options de ligne de commande.Eu le même problème et l'a corrigé en changeant les persmissions selon la réponse acceptée:
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"
/usr/local
signifie Unix System Resources .la source
Rien de tout cela n'a fonctionné pour moi. J'ai dû exécuter littéralement en tant que root en procédant comme suit:
Ensuite, le package installé sur Linux Ubuntu 14.04.
la source
La commande suivante devrait résoudre les problèmes d'autorisation:
Vous pouvez lire ici d'autres solutions officiellement recommandées:
https://docs.npmjs.com/getting-started/fixing-npm-permissions
la source
Ma solution:
dans mon cas était:
Mais j'ai eu le même problème, enfin après
ça a marché !
la source
J'ai eu le même problème et j'ai essayé de corriger l'autorisation / la propriété des fichiers et répertoires liés à npm pendant des heures mais pas eu de chance avec cela.
Soudain, j'ai trouvé que j'avais un
~/.npmrc
fichier dont l'cache
entrée pointait vers un répertoire inexistant. Suppression de cettecache
propriété pour utiliser l'emplacement de cache par défaut et maintenant c'est résolu.la source
Avertissement
Je suis un utilisateur Windows . Cependant, mon équipe et moi avons rencontré un certain nombre de problèmes concernant les erreurs d'installation de npm.
Problèmes
Voici une liste des leçons apprises et une solution radicale possible qui nous a toujours sauvés:
Activez les journaux npm pour mieux comprendre les problèmes possibles avec:
npm install --loglevel verbose
Radical
Installer rimraf dans le monde
Exécutez rimraf sur node_modules :
Essayez ensuite de lancer:
Avertissement!
Ou l'absence de. Soyez extrêmement prudent sur ce qui suit la commande
rimraf
. Il n'y a aucun avertissement, aucune invite, il n'y a rien. Il efface simplement le répertoire de la phase de la terre propre, comme s'il n'était jamais là. Essayez-le à vos risques et périls.la source