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

109

Quand j'exécute, npm installj'obtiens cette erreur

npm ERR! Erreur: EPERM: opération non autorisée, renommez C: \ projects ****** \ node_modules \ react-async-script '->' C: \ projects ******* \ node_modules.react-async-script .SUPPRIMER'

  • J'exécute le cmd en tant qu'administrateur
  • J'ai couru npm cache cleanavant
  • Je me suis assuré que toutes les autres applications n'avaient rien lié à node_modulesopen
Robin
la source
2
exécuter le cmd en tant qu'administrateur a fonctionné pour moi
Homer
Dans mon cas, j'ai dû l'exécuter en tant qu'utilisateur normal (pas administrateur) et cela a fonctionné, il semble qu'il y ait un conflit d'autorisations utilisateur. Mais il semble que toutes les autres solutions données ici npm clean, npm install ne sont pas nécessaires. C'est un problème d'autorisation utilisateur. Si plus de personnes peuvent confirmer, je peux publier une nouvelle réponse.
MG Developer

Réponses:

125

Dans ma situation, cela a aidé. Avant de procéder à l'exécution de ces commandes, fermez toutes les instances VS Code.

  1. nettoyer le cache 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. nettoyer le cache avec

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

J'espère que cela résoudra votre problème. Sinon, vous pouvez désactiver temporairement votre programme antivirus et réessayer.

romain
la source
1
merci @ kamil.ka c'était mon problème sous Windows. Atom bloquait le package.json pour que l'installation de npm ne puisse pas le changer.
George
29
Le même commentaire s'applique à VS Code sur Windows… fermez-le et le problème disparaît
Martin Kearn
1
Pour moi, j'avais un autre processus de nœud en cours d'exécution, json-server dans mon cas. Une fois que j'ai arrêté que le package installé sans erreur.
EddieB
Pour moi, des erreurs comme "ERR! Enoent Ceci est lié au fait que npm ne pouvait pas trouver un fichier" ont été résolues en mettant fin à toutes les instances du code de Visual Studio.
Abhishek
Parfois, nous surveillons l'utilisation de webpack qui contient tous les fichiers js, y compris les liens de modules non mis à jour, par exemple. app.js. Donc, après la mise à jour de npm, essayez d'exécuter npm run watch. Après cela, dans mon cas, les liens de module appropriés ont été mis à jour dans un nouveau fichier app.js.
Peter van der Lely
21

Non package.json, mais pour une raison quelconque, mon node_modules/était devenu en lecture seule. La réinitialisation a résolu ce problème.

Amit Bhosle
la source
«Réinitialiser» pour moi signifiait fermer 1.VS, 2.supprimer node_modulesde FileExplorer, redémarrer 3.mon PC en 4.cours d'exécution npm install --force. Puis ENFIN cela a fonctionné.
EGC
21

Je l'ai fait fonctionner lorsque j'ai essayé d'installer npm avec une option de force pour récupérer les ressources distantes même si une copie locale existe 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 du fil au lieu de npm. Cela fonctionne (plus vite aussi) sans aucun problème tout le temps

yarn install [package-name]
sree
la source
D'autres personnes ont suggéré de désactiver le logiciel audiovisuel. Pour moi, sur le réseau sur lequel je suis, ce n'était pas une option. Le drapeau --force a résolu ce problème pour moi
user2590928
Je n'ai résolu mon problème qu'en utilisant du fil, je recommande donc de lui donner une chance.
Ângelo Polotto
20

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

Je suggère les étapes suivantes dans cet ordre:

1- Dans l'arrêt Angular ng set dans React, l'arrêt 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 et npm ne peut pas les mettre à jour, ce qui génère cette erreur

2- 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 qu'il verrouille certains fichiers ou quelque chose)

Alors essayez de fermer l'éditeur de code et d'exécuter:

npm install

3- Si cela ne fonctionne toujours pas, vous pouvez peut-être essayer l' --forceoption

npm install --force
Ahmed Elkoussy
la source
2
C'était mon problème, j'ai rimraffé un dossier node_modules via le terminal sur VS Code - pour une raison quelconque, il n'a pas tout à fait supprimé les node_modules de mon système de fichiers et l'avait verrouillé. Ce n'est que lorsque j'ai fermé cette fenêtre de VS Code et l'ai ouverte de nouveau qu'elle a été supprimée et que j'ai pu exécuter à nouveau npm install.
Stu Furlong
13

J'obtenais 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 pour 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 t'aides.

vmaldosan
la source
1
Par github.com/npm/npm/issues/12059, cela a été corrigé. Aucun mot sur la sortie qu'il en fera. Selon les commentaires, la désactivation de l'AV ne fonctionne pas toujours.
user1821052
Dans mon cas, j'ai dû fermer SourceTree pendant l'installation.
Dejan
13

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

Sifat Haque
la source
9

Comme Martin Kearn l'a souligné dans un commentaire, la fermeture de Visual Studio a résolu ces problèmes d'autorisation npm pour moi. Évidemment, VS verrouille parfois les fichiers node_modules.

Jaycer
la source
8

J'obtenais la même chose. Je n'ai trouvé cela nulle part, mais il m'a frappé que nos machines virtuelles ont tendance à changer les fichiers en état en lecture seule. J'ai donc ouvert package.jsonles propriétés du fichier de et désélectionné Read-onlydans l'onglet "Général".

Pas

  1. Accédez au package.jsonfichier.
  2. Cliquez avec le bouton droit et sélectionnez Propriétés .
  3. Dans l' onglet Général , section Attributs , désélectionnez Lecture seule .
  4. Cliquez sur Appliquer pour appliquer la modification.
christo8989
la source
Lecture seule pour moi, même si le problème initial était que j'utilise généralement du code pour installer. Dans ce cas, j'ai ouvert une nouvelle instance de l'application dans Visual Studio afin de pouvoir porter certaines modifications d'une ancienne version et VS a rapidement commencé à s'installer. J'ai ensuite ouvert le code pour exécuter l'installation de npm comme je le ferais normalement et les deux applications se sont mises à tourner. Après plusieurs échecs, j'ai ensuite supprimé en masse un module de nœud d'une version racine de travail de notre application pour me permettre de sauvegarder les modifications. Ce dossier était en lecture seule et a donc continué à bloquer les choses.
Matrim
8

Il s'agit d'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 (politique de l'entreprise).

Vous devez changer le package polyfills.jsintérieur 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 instruction, il y a un délai d'attente pour 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'expiration et de laisser cette instruction 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)
}
Bruno Guaitanele
la source
Vous êtes le vrai MVP.
Atanas Korchev le
4

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

Kon
la source
4

J'ai eu ce problème plusieurs fois uniquement sous Windows, je les essaie dans l'ordre habituel.

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

En général, essayer npm installaprès l'une de ces étapes le résoudra.

Srivathsa Harish Venkataramana
la source
2

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

Zach Bloomquist
la source
2

J'ai eu le même problème après la mise à jour vers npm vers 5.4.2, npm a commencé à donner la même erreur pour la plupart des commandes npm. Une solution suggère de l'exécuter avec --no-optional, mais cela n'a pas toujours fonctionné.

D'autres ont suggéré de rétrograder, mais je ne voulais pas rétrograder.

Je soupçonnais qu'il y avait un problème avec l'installation, je ne sais pas ce que c'était.

J'ai donc mis à jour mon npm:

npm i -g npm

et a bien fonctionné depuis lors.

Salimd83
la source
1

npm échouait pour moi à scandirpour:

npm install -g webpack

... qui pourrait être causé par npm tentant de "modifier" des fichiers potentiellement verrouillés par d'autres processus comme mentionné ici et dans quelques autres threads github. Après avoir forcé le nettoyage du cache, vérifié le cache, exécuté en tant qu'administrateur, désactivé l'AV, etc., la solution qui fonctionnait réellement pour moi était de fermer tout ce qui pouvait verrouiller les fichiers (c'est-à-dire redémarrer mon ordinateur).

J'espère que cela aide quelqu'un à lutter.

kmk09k
la source
1

J'ai eu le même problème. La raison de l'erreur réside dans les caractères non pris en charge dans le chemin d'accès au fichier. Remplacement du cyrillique en anglais - cela a aidé.

Aleksey_Kopasov
la source
1

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. Ran le npm install.
RV.
la source
1

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

Ashutosh dwivedi
la source
1

Dans mon cas, exécutant npm: v6.9.0&& node: v10.16.1on Windows, je devais exécuter ma CLI (git bash) en tant qu'administrateur . Ensuite, les packages ont été installés sans aucun avertissement / erreur

ebram khalil
la source
0

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

UmaShankar
la source
0

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

Ramin Ar
la source
0

J'avais le même problème dans Windows 10. Suivez simplement ces étapes:

  • Ouvrez cmd en tant qu'administrateur.

  • installez le package npm mis à jour.

  • npm i -g npm

  • npm init - oui

Anand Tiwari
la source
0

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

Pallav Bohara
la source
0

J'ai lutté avec ça aussi. J'ai finalement une solution qui fonctionne très bien si vous utilisez nvm:

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

et c'est tout.

Millenion
la source
0

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

npm config set prefix "YOUR CUSTOM LOCATION" npm config set cache "YOUR CUSTOM LOCATION"

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

user3544913
la source
0

Dans mon cas, la configuration typescript.disableAutomaticTypeAcquisitiondans Visual Studio Code truesemble aider.

Markus Hettich
la source
0

La fermeture de PHPStorm a résolu le problème pour moi.

Rualark
la source
0

J'ai fermé VS, supprimé le dossier node_modules.

Puis a couru:

npm i -D -E clean-webpack-plugin@3.0.0 css- 
loader@3.4.2 html-webpack-plugin@3.2.0 mini-css- 
extract-plugin@0.9.0 ts-loader@6.2.1 typescript@3.7.5 
webpack@4.41.5 webpack-cli@3.3.10 

Ensuite, j'ai dû changer la propriété pour ne pas lire uniquement sur le dossier node_modules une fois qu'il a été exécuté.

Puis a couru:

npm i @microsoft/signalr @types/node

Ensuite, j'ai ouvert le projet dans VS et le package.json avait l'air correct avec les dépendances.

Dans le même esprit que d'autres, qui parlent de lecture seule sur le dossier node_modules et de fermeture de VS pour exécuter l'installation de npm.

Sam
la source
0

Si vous rencontrez le problème sur PHP Storm:

  1. Fermer l'onglet du terminal
  2. Ouvrez un nouvel onglet de terminal
2Fwebd
la source