npm ERR! Fehler: EPERM: Vorgang nicht zulässig, umbenennen

107

Wenn ich ausführe, npm installerhalte ich diesen Fehler

npm ERR! Fehler: EPERM: Vorgang nicht zulässig, benennen Sie C: \ projects ****** \ node_modules \ react-async-script '->' C: \ projects ******* \ node_modules.react-async-script um .LÖSCHEN'

  • Ich führe das cmd als Administrator aus
  • Ich bin npm cache cleanvorher gelaufen
  • Ich habe dafür gesorgt, dass alle anderen Anwendungen nichts mit node_modulesÖffnen zu tun haben
Robin
quelle
2
Das Ausführen des Cmd als Administrator hat für mich funktioniert
Homer
In meinem Fall musste ich es als normaler Benutzer (nicht als Administrator) ausführen und es funktionierte. Es scheint sich um einen Konflikt mit den Benutzerberechtigungen zu handeln. Aber es scheint, dass alle anderen hier angegebenen Lösungen npm clean, npm install nicht erforderlich sind. Es ist ein Problem mit der Benutzerberechtigung. Wenn mehr Leute bestätigen können, kann ich eine neue Antwort posten.
MG Developer

Antworten:

118

In meiner Situation hat das geholfen. Bevor Sie mit der Ausführung dieser Befehle fortfahren, schließen Sie alle VS-Code-Instanzen.

  1. Cache mit leeren

    npm cache clean --force
  2. Installieren Sie die neueste Version von npm weltweit als Administrator:

    npm install -g npm@latest --force
  3. Cache mit leeren

    npm cache clean --force
  4. Versuchen Sie erneut, Ihre Komponente zu installieren.

Ich hoffe, dies behebt Ihr Problem. Wenn nicht, können Sie Ihr Antivirenprogramm vorübergehend deaktivieren und es erneut versuchen.

römisch
quelle
1
danke @ kamil.ka das war mein Problem unter Windows. Atom hat die package.json gesperrt, sodass die npm-Installation sie nicht ändern konnte.
George
28
Der gleiche Kommentar gilt für VS Code unter Windows… schließen Sie ihn und das Problem
verschwindet
1
Für mich lief ein anderer Knotenprozess, in meinem Fall json-server. Einmal habe ich damit aufgehört, das Paket fehlerfrei zu installieren.
EddieB
Für mich wurden Fehler wie "ERR! Enoent Dies hängt damit zusammen, dass npm keine Datei finden kann" behoben, indem alle Instanzen für Visual Studio-Code beendet wurden.
Abhishek
Manchmal überwachen wir die Verwendung von Webpacks, die alle JS-Dateien einschließlich nicht aktualisierter Modul-Links in z. app.js. Versuchen Sie also nach dem npm-Update auszuführen npm run watch. Danach wurden in meinem Fall die richtigen Modulverknüpfungen in einer neuen app.js-Datei aktualisiert.
Peter van der Lely
21

Ich habe es zum Laufen gebracht, als versucht wurde, npm mit einer Force-Option zu installieren, um Remote-Ressourcen abzurufen, selbst wenn eine lokale Kopie auf der Festplatte vorhanden ist. Versuche zu rennen

npm install --force

Aktualisiert Für einige meiner Kollegen funktionierte diese Lösung nicht. Aber wir haben versucht, Garn anstelle von npm zu verwenden. Es funktioniert (auch schneller) ohne Probleme

yarn install [package-name]
sree
quelle
Andere Leute schlugen vor, die AV-Software auszuschalten. Für mich in dem Netzwerk, in dem ich mich befinde, war dies keine Option. Das --force Flag hat dieses Problem für mich gelöst
user2590928
Ich habe mein Problem nur mit Garn gelöst, deshalb empfehle ich ihm einen Versuch zu geben.
Angelo Polotto
20

Nicht package.json, aber aus irgendeinem Grund war ich node_modules/schreibgeschützt. Das Zurücksetzen hat dies behoben.

Amit Bhosle
quelle
„Zurücksetzen“ für mich bedeuten , dass 1.Closing VS, 2.Löschen node_modulesvon File Explorer 3.Neustart meines PC 4.Laufe npm install --force. Dann hat es endlich geklappt.
EGC
20

Wenn Sie die --forceOption vermeiden möchten (was immer ein besserer Ansatz ist) , sollten Sie sicherstellen, dass Sie das Projekt nicht mehr ausführen, da dies normalerweise der Hauptgrund für das Sperren der Dateien in fast 90% der Fälle ist, die ich gesehen habe

Ich schlage die folgenden Schritte in dieser Reihenfolge vor:

1- Beim Angular-Stopp ng sund beim React-Stopp wird npm start dieses Problem normalerweise behoben, da dieser Fehler normalerweise auftritt, wenn ein Entwicklungsserver das Projekt ausführt, da er einige Dateien sperrt und npm sie dann nicht aktualisieren kann, wodurch dieser Fehler ausgelöst wird

2- Wenn das oben genannte nicht funktioniert, schließen Sie den Code-Editor, in dem der Arbeitsbereich geöffnet ist (möglicherweise wurden einige Dateien oder ähnliches gesperrt).

Versuchen Sie also, den Code-Editor zu schließen und auszuführen:

npm install

3- Wenn es immer noch nicht funktioniert, können Sie die --forceOption ausprobieren

npm install --force
Ahmed Elkoussy
quelle
2
Dies war mein Problem. Ich habe einen Ordner node_modules über das Terminal in VS Code rimraffed. Aus irgendeinem Grund wurden die node_modules nicht vollständig aus meinem Dateisystem entfernt und gesperrt. Erst als ich das Fenster von VS Code schloss und es wieder öffnete, wurde es tatsächlich entfernt und ich konnte npm install erneut ausführen.
Stu Furlong
13

Ich habe den gleichen Fehler erhalten und laut https://github.com/Medium/phantomjs/issues/19 könnte er durch Ihre Antivirensoftware verursacht werden. Ich habe meine für die Dauer der Installation deaktiviert und "npm install" auf cmd als admin ausgeführt und es hat funktioniert. Hoffe das hilft.

Vmaldosan
quelle
1
Per github.com/npm/npm/issues/12059 wurde dies behoben. Kein Wort darüber, in welche Veröffentlichung es kommen wird. Laut Kommentaren funktioniert das Deaktivieren von AV nicht immer.
user1821052
In meinem Fall musste ich SourceTree während der Installation schließen.
Dejan
13

Für mich habe ich gerade den Code-Editor (VS Code) geschlossen und dann den gleichen Befehl ausgeführt. Und das löst das Problem für mich.

Sifat Haque
quelle
9

Wie Martin Kearn in einem Kommentar betonte, löste das Schließen von Visual Studio diese Probleme mit der npm-Berechtigung für mich. Offensichtlich sperrt VS manchmal Dateien node_modules.

Jaycer
quelle
8

Ich bekam das Gleiche. Ich habe das nirgendwo gefunden, aber es hat mich beeindruckt, dass unsere VMs dazu neigen, Dateien in einen schreibgeschützten Zustand zu versetzen. Also habe ich die package.jsonDateieigenschaften geöffnet und Read-onlyauf der Registerkarte "Allgemein" die Auswahl aufgehoben.

Schritte

  1. Gehen Sie zur package.jsonDatei.
  2. Klicken Sie mit der rechten Maustaste und wählen Sie Eigenschaften .
  3. Deaktivieren Sie auf der Registerkarte Allgemein im Abschnitt Attribute die Option Schreibgeschützt .
  4. Klicken Sie auf Übernehmen , um die Änderung zu übernehmen.
christo8989
quelle
Schreibgeschützt für mich, obwohl das ursprüngliche Problem darin bestand, dass ich normalerweise nur Code zur Installation verwende. In diesem Fall habe ich eine neue Instanz der App in Visual Studio geöffnet, damit ich einige Änderungen gegenüber einer alten Version portieren konnte, und VS hat sofort mit der Installation begonnen. Ich öffnete dann den Code, um die npm-Installation wie gewohnt auszuführen, und beide Apps gerieten in Schwierigkeiten. Nach mehreren Fehlern habe ich dann ein Knotenmodul aus einer funktionierenden Root-Version unserer App gelöscht, damit ich die Änderungen zurückportieren kann. Dieser Ordner war schreibgeschützt und blockierte dann weiterhin Dinge.
Matrim
8

Dies ist ein typischer Fehler, der durch Antivirus verursacht wird. Es gibt eine Problemumgehung für Fälle wie meinen, in denen ich A / V (Unternehmensrichtlinie) nicht deaktivieren kann.

Sie müssen das polyfills.jsInnenpaket ändern Npm:

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

Suchen Sie nach dieser Aussage:

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

Innerhalb dieser Anweisung gibt es eine Zeitüberschreitung, die im Fehlerfall einen erneuten Versuch durchführt. Das Problem ist, dass in einigen Fällen die Datei nach dem Timeout immer noch von der Klimaanlage gesperrt wird. Die Lösung besteht darin, das Timeout herauszureißen und diese Anweisung in einer Schleife zu lassen. Die Änderung mit dem vorherigen Code kommentierte:

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
quelle
Sie, Sir, sind der wahre MVP.
Atanas Korchev
4

In meinem Fall wurde etwas blockiert und durch einen schnellen Neustart wurde das Problem behoben.

Kon
quelle
4

Ich hatte dieses Problem mehrmals nur unter Windows. Ich versuche es normalerweise in der Reihenfolge.

  1. npm install --force
  2. Überprüfen Sie, ob node_modules schreibgeschützt ist, und entfernen Sie sie, falls dies der Fall ist
  3. Löschen node_modules/
  4. Überprüfen Sie, ob ein Editor geöffnet ist, der Zugriff auf den Stammordner des Projekts haben könnte
  5. Neustart :(

Wenn Sie dies normalerweise npm installnach einem dieser Schritte versuchen, wird das Problem behoben.

Srivathsa Harish Venkataramana
quelle
2

Der Versuch, eine Datei in einen anderen bereits vorhandenen Dateinamen umzubenennen, kann EPERMunter Windows zu einem Fehler führen.

Zach Bloomquist
quelle
2

Ich hatte das gleiche Problem nach dem Update auf npm auf 5.4.2, npm gab den gleichen Fehler für die meisten npm-Befehle aus. Einige Lösungen schlagen vor, es auszuführen --no-optional, aber es hat nicht immer funktioniert.

Andere schlugen ein Downgrade vor, aber ich wollte kein Downgrade durchführen.

Ich vermutete, dass es ein Problem mit der Installation gab, nicht sicher, was es war.

Also habe ich meine npm neu aktualisiert:

npm i -g npm

und hat seitdem gut funktioniert.

Salimd83
quelle
1

npm scheiterte für mich an scandir:

npm install -g webpack

... was möglicherweise durch den Versuch von npm verursacht wird, Dateien zu "ändern", die möglicherweise von anderen Prozessen gesperrt wurden, wie hier und in einigen anderen Github-Threads. Nach dem erzwungenen Bereinigen des Caches, Überprüfen des Caches, Ausführen als Administrator, Deaktivieren des AV usw. Die Lösung, die tatsächlich für mich funktionierte, bestand darin, alles zu schließen, was die Dateien möglicherweise sperren könnte (dh meinen Computer neu starten).

Ich hoffe, das hilft jemandem, der Probleme hat.

kmk09k
quelle
1

Ich hatte das gleiche Problem. Der Grund für den Fehler sind nicht unterstützte Zeichen im Pfad zur Datei. Ersetzte die kyrillische in Englisch - es half.

Aleksey_Kopasov
quelle
1

Öffnen Sie die Eingabeaufforderung als Administrator, navigieren Sie zum Projektspeicherort und führen Sie dann npm install aus. es hat bei mir funktioniert.

Ashutosh Dwivedi
quelle
1

In meinem Fall, in dem npm: v6.9.0&& node: v10.16.1on ausgeführt wurde Windows, musste ich meine CLI (git bash) als Administrator ausführen . Dann wurden Pakete ohne Warnungen / Fehler installiert

Ebram Khalil
quelle
0

Meine Antwort ist zuerst zu tun npm cache clean --force. Führen Sie dann aus npm install -g [email protected], um die Version npm 5.3.0 zu installieren. Für mich funktioniert diese npm-Version ohne Probleme.

UmaShankar
quelle
0

Ich habe folgendes gemacht:

  1. Upgrade der npm auf die neueste Version: npm install -g [email protected]
  2. löschte den npm-cache Ordner von: c:/users/[username]/AppData/Roaming/npm-cache
  3. Hat den Cache sauber gemacht: npm cache clean --force
  4. Lief die npm install.
Wohnmobil.
quelle
0

Löschen Sie einfach den Paketordner aus dem Pfad der globalen npm-Pakete. Installieren Sie dann das Paket neu. Beachten Sie, dass die Pakete global installiert sind in: C: \ Benutzer \ Ihr Name \ AppData \ Roaming \ npm \ Knotenmodule

Ramin Ar
quelle
0

Ich hatte das gleiche Problem in Windows 10. Befolgen Sie einfach diese Schritte:

  • Öffnen Sie cmd als Administrator.

  • Installieren Sie das aktualisierte npm-Paket.

  • npm i -g npm

  • npm init --yes

Anand Tiwari
quelle
0

Das Ausführen von Befehlen als Super Admin hat bei mir funktioniert. Wiederholen Sie den Vorgang, nachdem Sie den Editor geschlossen haben, in dem Sie arbeiten.

Pallav Bohara
quelle
0

Ich hatte auch damit zu kämpfen. Ich habe endlich eine Lösung, die gut funktioniert, wenn Sie nvm verwenden:

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

und das ist es.

millenion
quelle
0

Dies kann an Ihrer Antivirensoftware liegen. Wenn Sie AV nicht deaktivieren können, können Sie versuchen, Ihren globalen NPM-Installationsort zu ändern, während der Knoten in das APPDATA-Verzeichnis installiert wird, das von AV Engines aktiv überwacht wird. Versuchen Sie, die folgenden Befehle auszuführen:

npm config set Präfix "IHR BENUTZERDEFINIERTER STANDORT" npm config set set cache "IHR BENUTZERDEFINIERTER STANDORT"

Löschen Sie das Verzeichnis node_modules und installieren Sie Ihr Paket erneut.

user3544913
quelle
0

In meinem Fall schien die Einstellung typescript.disableAutomaticTypeAcquisitionin Visual Studio Code truezu helfen.

Markus Hettich
quelle
0

Das Schließen von PHPStorm hat das Problem für mich behoben.

Rualark
quelle
0

Ich habe VS geschlossen und den Ordner node_modules gelöscht.

Dann lief:

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 

Dann musste die Eigenschaft so geändert werden, dass sie nicht nur im Ordner node_modules schreibgeschützt ist, sobald sie ausgeführt wurde.

Dann lief:

npm i @microsoft/signalr @types/node

Dann öffnete sich das Projekt wieder in VS und die package.json sah mit den Abhängigkeiten richtig aus.

Ähnlich wie andere, die davon sprechen, im Ordner node_modules schreibgeschützt zu sein und VS zu schließen, um die npm-Installation erneut auszuführen.

Sam
quelle
0

Wenn Sie das Problem mit PHP Storm haben:

  1. Schließen Sie die Terminal-Registerkarte
  2. Öffnen Sie eine neue Registerkarte "Terminal"
2Fwebd
quelle