web-dev-qa-db-fra.com

npm ERR! Erreur: EPERM: opération non autorisée, renommer

Quand j'exécute "npm install", j'obtiens cette erreur 

npm ERR! Error: EPERM: operation not permitted, rename C:\projects\******\node_modules\react-async-script' -> 'C:\projects\*******\node_modules\.react-async-script.DELETE'
  • J'exécute le cmd en tant qu'administrateur
  • J'ai exécuté le cache npm propre avant
  • Je me suis assuré que toutes les autres applications n'ont rien associé à node_modeules ouvert 
35
Robin

Dans ma situation, cela a aidé:

  1. cache propre avec 

    npm cache clean --force
    
  2. installez la dernière version de npm globalement en tant qu'administrateur:

    npm install -g npm@latest --force
    
  3. cache propre avec 

    npm cache clean --force
    
  4. Essayez d'installer à nouveau votre composant.

J'espère que cela résoudra votre problème. Si cela ne vous aide pas, essayez de changer de programme antivirus pendant un moment et recommencez.

41
Roman

Je l'ai fait fonctionner lorsque j'ai essayé d'installer npm avec une option force pour récupérer des ressources distantes même s'il existe une copie locale sur le disque. Essayez de courir 

npm install --force

Mise à jour Pour certains de mes collègues, cette solution ne fonctionnait pas. Mais nous avons essayé d'utiliser yarn au lieu de npm. Cela fonctionne (plus vite aussi) sans aucun problème tout le temps

yarn install [package-name]
16
sree

Pas package.json, mais pour une raison quelconque, mon node_modules/ était devenu en lecture seule. Réinitialiser cela corrige cela.

9
Amit Bhosle

J'avais la même erreur et selon https://github.com/Medium/phantomjs/issues/19 cela pourrait être causé par votre logiciel antivirus. J'ai désactivé le mien pendant toute la durée de l'installation et exécuté "npm install" sur cmd en tant qu'administrateur et cela a fonctionné . J'espère que cela vous aidera.

8
vmaldosan

J'avais la même chose. Je n'ai trouvé cela nulle part, mais je suis frappé par le fait que nos machines virtuelles ont tendance à modifier les fichiers en lecture seule. J'ai donc ouvert les propriétés du fichier de package.json et désélectionné Read-only dans l'onglet "Général".

Pas

  1. Accédez au fichier package.json.
  2. Cliquez avec le bouton droit de la souris et sélectionnez Propriétés.
  3. Dans l'onglet Général, section Attributes, désélectionnez Lecture seule .
  4. Cliquez sur Appliquer pour appliquer le changement.
5
christo8989

J'ai eu ce problème à plusieurs reprises seulement dans Windows J'essaie habituellement dans l'ordre.

  1. npm install --force
  2. Vérifiez si node_modules est défini en lecture seule et Remove si c'est le cas.
  3. Supprimer node_modules /
  4. Vérifier si un éditeur est ouvert Qui pourrait avoir accès au dossier racine du projet
  5. Redémarrer :(

Essayer habituellement d’installer npm après l’une de ces étapes le résoudra.

Si vous voulez éviter l’option --force(qui est toujours une meilleure approche),je vous suggère de vous assurer que vous avez arrêté d’exécuter le projet, car c’est généralement la raison principale pour le verrouillage des fichiers. 90% des cas que j'ai vus

Par exemple:

Dans Angular stopping ng s et dans React stopping npm start résout généralement ce problème, car cette erreur se produit généralement si un serveur de développement exécute le projet car il verrouille certains fichiers. Npm ne peut donc pas les mettre à jour.

Si ce qui précède ne fonctionne pas, essayez de fermer l'éditeur de code dans lequel l'espace de travail est ouvert (peut-être bloquait-il certains fichiers ou quelque chose)

Alors essayez de fermer l'éditeur de code et de lancer:

npm install

Si cela ne fonctionne toujours pas, alors vous pouvez peut-être essayer l'option --force

npm install --force
4
Ahmed Elkoussy

Comme Martin Kearn l'a souligné dans un commentaire, fermant Visual Studio a résolu pour moi ces problèmes d'autorisation npm. Evidemment, VS verrouille parfois des fichiers dans node_modules.

3
jaycer

J'ai eu le même problème après avoir mis à jour npm en 5.4.2, npm start donnant la même erreur pour la plupart des commandes npm. Certaines solutions suggèrent de l'exécuter avec --no-optional:

ça n'a pas toujours marché.

autre suggéré de déclasser, je ne voulais pas déclasser.

J'ai suspecté qu'il y avait un problème avec l'installation, pas sûr de ce que c'est.

donc j'ai re-mis à jour mon npm:

npm i -g npm

et a bien fonctionné depuis.

2
Salimd83

C'est une erreur typique causée par l'antivirus. Il existe une solution de contournement pour des cas comme le mien, où je ne peux pas désactiver A/V (stratégie de la société). 

Vous devez changer le paquet polyfills.js dans Npm:

[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js

Recherchez cette déclaration:

if (process.platform === "win32") {

À l'intérieur de cette déclaration, il y a un délai d'attente faisant une nouvelle tentative en cas d'erreur. Le problème est que dans certains cas, après l'expiration du délai, le fichier est toujours verrouillé par l'A/V. La solution est d'extraire le délai d'attente et de laisser cette déclaration en boucle. Le changement avec le code précédent a commenté:

if (platform === "win32") {

fs.rename = (function (fs$rename) { return function (from, to, cb) {
  var start = Date.now()
  var backoff = 0;
  fs$rename(from, to, function CB (er) {
    if (er
        && (er.code === "EACCES" || er.code === "EPERM")
        /*&& Date.now() - start < 60000*/) {
            console.log("Retrying rename file: " + from + " <> " + to)
            fs$rename(from, to, CB);
      /*setTimeout(function() {
        fs.stat(to, function (stater, st) {
          if (stater && stater.code === "ENOENT")
            fs$rename(from, to, CB);
          else
            cb(er)
        })
      }, backoff)*/
      if (backoff < 100)
        backoff += 10;
      return;
    }
    if (cb) cb(er)
  })
}})(fs.rename)
}
2
Bruno Guaitanele

Ouvrez la commande Invite en tant qu'administrateur, accédez à l'emplacement du projet, puis exécutez npm install. cela a fonctionné pour moi.

1
Ashutosh dwivedi

Pour certains, le dossier AppRoot\npm peut être un problème. Parfois, le dossier AppRoot est marqué comme partagé sur le réseau et donc Antivirus bloque le contenu. Suivez le lien ci-dessous pour une solution complète.

https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/

J'espère que ça aide.

1
Aryan

npm échouait pour moi à scandir pour:

npm install -g webpack

... ce qui pourrait être causé par la tentative de npm de "modifier" des fichiers potentiellement verrouillés par d'autres processus, comme mentionné ci-dessus ici et dans quelques autres threads github. Après avoir forcé le nettoyage du cache, la vérification du cache, l’exécution en tant qu’administrateur, la désactivation de l’AV, etc., la solution qui fonctionnait bien pour moi était de fermer tout ce qui risquait de verrouiller les fichiers} _ (c'est-à-dire le redémarrage de mon ordinateur). 

J'espère que cela aide quelqu'un en difficulté. 

1
kmk09k

J'ai eu le même problème. L'erreur est due à des caractères non pris en charge dans le chemin d'accès au fichier. Remplacé le cyrillique en anglais - cela a aidé.

1
Aleksey_Kopasov

Dans mon cas, quelque chose a été bloqué et un redémarrage rapide l'a résolu.

1
Kon

Essayer de renommer un fichier en un autre nom de fichier qui existe déjà peut provoquer une erreur EPERM sous Windows.

1
Zach Bloomquist

Ma réponse est de faire npm cache clean --force en premier. Exécutez ensuite npm install -g [email protected] pour installer la version 5.3.0 de npm. pour moi, cette version npm fonctionne sans problème.

0
UmaShankar

Cela peut être dû à votre logiciel antivirus. Si vous ne pouvez pas désactiver AV, vous pouvez essayer de modifier votre emplacement d’installation global NPM en installant le nœud dans le répertoire APPDATA qui est activement surveillé par les moteurs AV. Essayez d'exécuter les commandes suivantes-

préfixe de l'ensemble de configuration npm "VOTRE EMPLACEMENT PERSONNALISÉ" Cache de l'ensemble de configuration npm "VOTRE EMPLACEMENT PERSONNALISÉ"

Supprimez le répertoire node_modules et réinstallez votre paquet.

0
user3544913

Pour moi, je viens de fermer l'éditeur de code (VS Code) et ensuite exécuter la même commande. Et cela résout le problème pour moi.

0
Sifat Haque

Dans mon cas, régler TypeScript.disableAutomaticTypeAcquisition dans Visual Studio Code sur true semblait aider.

0
Markus Hettich

J'ai remonté mes disques de fenêtre avec l'indicateur de métadonnées et j'ai immédiatement aidé: https://devblogs.Microsoft.com/commandline/chmod-chown-wsl-improvements/

après cela, plus besoin d'utiliser les commandes Sudo pour npm car les métadonnées permettent de contrôler les autorisations de fichiers et de répertoires Windows et Linux.

0
Lemon

Exécuter des commandes en tant que super administrateur a fonctionné pour moi. Réessayez après la fermeture de l'éditeur dans lequel vous travaillez.

0
pallav bohara

J'ai fait ce qui suit: 

  1. Mise à niveau du npm vers la dernière version: npm install -g [email protected] 
  2. supprimé le dossier npm-cache de: c:/users/[username]/AppData/Roaming/npm-cache
  3. Le cache a-t-il été nettoyé: npm cache clean --force
  4. Couru le npm install.
0
Rahul Verma

J'ai eu du mal avec ça aussi. Je finallement une solution qui fonctionne bien si vous utilisez NVM:

cd ~/.nvm/versions/node/{your node version}/lib/npm install npm

et c'est tout.

0
millenion

Supprimez simplement le dossier de package du chemin des packages globaux npm. puis réinstallez le package . Notez que les packages sont installés globalement dans: C:\Utilisateurs\votre-nom\AppData\Roaming\npm\node_modules

0
Ramin Ar

J'avais le même problème dans Windows 10. Il suffit de suivre ces étapes:

  • Ouvrez cmd en tant qu'administrateur.

  • installez le paquet npm mis à jour.

  • npm i -g npm

  • npm init --oui

0
Anand Tiwari

Dans mon cas, en utilisant npm: v6.9.0 && node: v10.16.1 sur Windows, je devais exécuter mon CLI (git bash) en tant qu'administrateur. Ensuite, les paquets ont été installés sans avertissements/erreurs

0
ebram khalil