Nvm-windows: Npm kann nicht aktualisiert werden (Knoten 8.4.0)

Erstellt am 7. Sept. 2017  ·  127Kommentare  ·  Quelle: coreybutler/nvm-windows

Wenn dies eine Frage zur Verwendung von NVM4W ist, verwenden Sie stattdessen den

Wenn dies ein Problem in Bezug auf Antivirus ist, stellen Sie sicher, dass Sie zuerst die vorhandenen Probleme durchsuchen.

Meine Umgebung

  • [] Windows 7 oder niedriger (wird aufgrund von EOL nicht wirklich unterstützt - Details finden Sie im Wiki)
  • [ ] Windows 8
  • [ ] Windows 8.1
  • [x] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] Meine Windows-Installation ist nicht englisch.

Ich verwende die NVM4W-Version:

  • [] 1.1.6
  • [x] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • [] Älter
  • [ ] Sonstiges (bitte angeben)

Ich habe schon...

  • [x] Lesen Sie die README-Datei, um sich über npm-Fallstricke und Antivirenprobleme zu informieren.
  • [] überprüfte das Wiki , um sicherzustellen, dass mein Problem noch nicht behoben wurde.
  • [x] überprüft, ob ich ein Konto mit Administratorrechten verwende.
  • [x] hat die Probleme (offen und geschlossen) durchsucht, um sicherzustellen, dass dies kein Duplikat ist.
  • [] stellte sicher, dass dies keine Frage zur Verwendung von NVM für Windows ist, da Gitter für Fragen und Kommentare verwendet wird.

Mein Problem bezieht sich auf (überprüfen Sie nur die zutreffenden):

  • [] settings.txt
  • [] Proxy-Unterstützung (Haben Sie Version 1.1.0+ ausprobiert?)
  • [] 32- oder 64-Bit-Unterstützung (Haben Sie Version 1.1.3+ ausprobiert?)
  • [] Zeichen entkommen (Haben Sie Version 1.1.6+ ausprobiert?)
  • [x] Eine Standard-Shell-Umgebung (Terminal / Powershell)
  • [] Eine nicht standardmäßige Shell-Umgebung (Cmder, Hyper, Cygwin, git)

Erwartetes Verhalten

npm i -g npm @ latest sollte die neueste npm-Version installieren

Tatsächliches Verhalten

ein Fehler:
npm ERR! path C:\Program Files\nodejs\npm.cmd npm ERR! code EEXIST npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link npm ERR! File exists: C:\Program Files\nodejs\npm.cmd npm ERR! Move it away, and try again.

Schritte zum Reproduzieren des Problems:

Als Administrator ausführen npm i -g npm@latest

help wanted

Hilfreichster Kommentar

Ich entferne einfach die Dateien npm und npm.cmd vom Speicherort des Knotens, verschiebe dir node_modules/npm vom Speicherort des Knotens an einen anderen Speicherort und führe node npm-cli.js i -g npm@latest innerhalb von bin dir im verschobenen Ordner.

Alle 127 Kommentare

Selbes Problem hier.

Ich hatte das gleiche Problem und hier ist, wie ich durchgekommen bin:

Führen Sie npm install -g npm und während es läuft :
Entfernen Sie (Sicherungs-) Dateien npm.cmd und npm aus c:\Program Files\nodejs\
Entfernen Sie (Backup) .bin Ordner aus c:\Program Files\nodejs\node_modules\npm\node_modules , dann sollte es erfolgreich sein
Wenn Sie Refusing to delete Probleme mit einem anderen npm-Modul files/folders haben, müssen Sie diese nur entfernen und den Aktualisierungsprozess neu starten. Um neu zu starten, kopieren Sie npm.cmd zurück auf c:\Program Files\nodejs\ . Dann einmal npm install -g npm ausgeführt wird , entfernen Sie npm.cmd , sonst erhalten Sie bei Refusing to delete npm.cmd Problem, könnte man diesen Prozess wiederholen , bis npm install -g npm ist glücklich.

Um die Dateien zu entfernen, können Sie diese Verknüpfung verwenden: mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\node_modules" wie von @farnetani vorgeschlagen

mein env:
windows 7 x64, node 8.4, nvm 1.1.6

image

Das gleiche Problem sehen

sich
Fenster 10
Knoten 8.5.0
über dem Meeresspiegel 5.3.0
nvm 1.1.0

@kuncevic
Die einfachere Lösung besteht darin, dir node_modules/npm vom Speicherort des Knotens zu kopieren, den npm-Bin und cmm zu entfernen und node npm-cli.js i -g npm@latest in bin dir im kopierten Ordner auszuführen.

Soviel zur Produktion. Viel Glück beim Schreiben.

Sie sollten die kontinuierliche Integration in kontinuierliche Integration umbenennen

@ 19majkel94 Konnte es mit Ihrer Methode nicht funktionieren ... irgendwelche anderen Ideen, die ich schreiben könnte?

Es scheint, als hätte npm geändert, wie es sich selbst aktualisiert ... ohne es jemandem zu sagen. npx wurde auch mit nur einer geringfügigen Versionsänderung eingeführt (im Gegensatz zu einer größeren Änderung) .... was _semantisch_ korrekt ist, aber immer noch schwer zu verfolgen ist.

Anscheinend findet ein Dateisandboxing statt. Ich habe den größten Teil des heutigen Tages damit verbracht, einen Fix zu untersuchen und zu versuchen, aber jeder Fix zeigt ein anderes Problem. Tragen Sie mit mir, ich werde es reparieren, sobald ich kann. Ich bin im Moment der einzige, der daran arbeitet ... und ich bin gerade mitten in einer anderen Produkteinführung (nach 2 Jahren Arbeit), daher würde eine PR gerne angenommen.

Ich wünschte, ich könnte helfen, aber ich habe eine Beobachtung ... Ich denke, dass die Probleme mit der Verknüpfung zu " C:/Program Files/nodejs " zusammenhängen. Vielleicht, wenn eine Kreuzung anstelle einer Verknüpfung verwendet würde? Windows kann den Unterschied zwischen einem "echten" Verzeichnis und einer Junction nicht erkennen. Es sieht also so aus, als wäre der Knoten wirklich im Standardverzeichnis installiert. Kein "Betrieb" mehr in einem Verzeichnis außerhalb des aufgelösten Verzeichnisses.

https://docs.microsoft.com/en-us/sysinternals/downloads/junction

Übrigens sollte die Verwendung einer Junction nvm4w zukunftssicher gegen zukünftige Änderungen des Verhaltens von npm machen.

@ Wayne-Oscme
Hast du die Readme gelesen?

Die zweite Option ist die Verwendung eines Symlinks. Für dieses Konzept muss der Symlink in den Systempfad eingefügt und sein Ziel auf das Knoteninstallationsverzeichnis aktualisiert werden, das Sie verwenden möchten. Dies ist ein unkomplizierter Ansatz und scheint das zu sein, was die Leute empfehlen ... bis sie erkennen, wie sehr Schmerzsymlinks unter Windows sind. Deshalb ist es noch nie passiert.

Um einen Symlink zu erstellen / ändern, müssen Sie als Administrator ausgeführt werden und die Windows-Benutzerkontensteuerung umgehen (diese nervige Eingabeaufforderung). Zum Glück ist dies eine Herausforderung, die ich bereits mit einigen Hilfsskripten in Knotenfenstern gelöst habe. Infolgedessen verwaltet NVM für Windows einen einzelnen Symlink, der nur während der Installation in den Systempfad eingefügt wird. Das Wechseln zu verschiedenen Versionen des Knotens ist eine Frage des Wechselns des Symlink-Ziels. Daher müssen Sie für dieses Dienstprogramm nicht jedes Mal, wenn Sie ein Konsolenfenster öffnen, nvm use xxx ausführen. Wenn Sie nvm use xxx ausführen, wird die aktive Version des Knotens automatisch in allen geöffneten Konsolenfenstern aktualisiert. Es bleibt auch zwischen Systemneustarts bestehen, sodass Sie nvm nur verwenden müssen, wenn Sie eine Änderung vornehmen möchten.

@ 19majkel94
Bitte lesen Sie über Kreuzungen. Die Verknüpfung des 'Symlink'-Fensters hat Probleme mit der Auflösung des Zielverzeichnisses aus Prozessen. Während der Explorer und das Terminal von Window sie gut zu handhaben scheinen, werden sie in anderen Prozessen nicht gut gehandhabt. Öffnen Sie den Editor und wählen Sie Datei öffnen, um den Dateidialog des Standardfensters aufzurufen. Navigieren Sie zu "C:/Program Files/nodejs" und sehen Sie, wo Sie landen.

Eine Weiterleitung in das Zielverzeichnis, in dem, wie wir sehen, Prozesse enden, kann zu einigen interessanten Problemen führen.

Junctions entsprechen Hardlinks in * nix. Windows unterstützt diese nur für Verzeichnisse und nicht für Dateien, aber das ist alles, was wir hier brauchen. Sie sind keine Weiterleitungen. Sie sind in jeder Hinsicht das Verzeichnis, nicht anders als der Pfad, der beim ersten Erstellen des Verzeichnisses erstellt wurde.

Sie leiten nicht um, sie sind das Ziel. Sie können mit jedem Befehl 'use' gelöscht und erneut erstellt werden. Daher haben sie die gleichen Effekte und Funktionen wie Verknüpfungen, aber keinen der Nachteile, die das aktuelle Problem verursachen.

Dies hat nichts mit Junctions / Hardlinks / Symlinks zu tun. @kuncevic lieferte einen Screenshot mit npm-Fehlern, wobei der Schlüsselteil Refusing to delete ... which is outside of .... . Dies ist eine fest codierte Nachricht in npm, die weitere Vorgänge verhindert. Fazit: npm weigert sich, sich selbst vollständig zu aktualisieren.

Dies schien bis npm 5.xx kein Problem zu sein, und ich gehe immer noch die Details durch, um herauszufinden, was sich geändert hat. Möglicherweise muss ich eine Problemumgehung (dh einen Hack) schreiben, die ich nie mag. Ich beschäftige mich auch mit der Verwendung der MSI-Pakete, was der einzige Weg zu sein scheint, um die Aufmerksamkeit der Leute um npm zu erregen.

Wenn Sie npm dringend aktualisieren müssen, können Sie es über https://github.com/npm/npm/archive/vX.X.X.zip herunterladen und in das Verzeichnis node_modules Ihres Knoteninstallationsstamms extrahieren. Sie müssen manuell einen Symlink in der _node-Installation root_ zu npm.cmd und npx.cmd erstellen. Die endgültige Dateistruktur sollte ungefähr so ​​aussehen:

nvm
- v8.5.0
   - node_modules
       - npm
          - bin
               - npm.cmd
               - npx.cmd
          ...
   - node.exe
   - npm.cmd (symlink to v8.5.0/node_modules/npm/bin/npm.cmd)
   - npx.cmd (symlink to v8.5.0/node_modules/npm/bin/npx.cmd)

Okay, ich denke, ich sollte es vor dem Verkauf versuchen. Ich habe die Verknüpfung durch eine ersetzt
Kreuzung und bekam das gleiche genaue Problem. Ich dachte, ich hätte etwas da.
Tut mir leid, deine Zeit zu verschwenden.

Am Mittwoch, 27. September 2017, um 9:38 Uhr, Corey Butler [email protected]
schrieb:

Dies hat nichts mit Junctions / Hardlinks / Symlinks zu tun. @kuncevic
https://github.com/kuncevic lieferte einen Screenshot mit npm-Fehlern.
Der Schlüsselteil ist, sich zu weigern zu löschen ... was außerhalb von ... liegt
ist eine fest codierte Nachricht in npm, die weitere Operationen verhindert. Endeffekt:
npm weigert sich, sich selbst vollständig zu aktualisieren.

Dies schien bis npm 5.xx kein Problem zu sein, und ich grabe immer noch
durch die Details, um herauszufinden, was sich geändert hat. Ich muss vielleicht eine schreiben
Problemumgehung (dh Hack), die ich nie mag. Ich schaue auch in
Verwendung der MSI-Pakete, die der einzige Weg zu sein scheint, um die zu erhalten
Aufmerksamkeit der Leute um npm.

Wenn Sie npm dringend aktualisieren müssen, können Sie es über herunterladen
https://github.com/npm/npm/archive/vX.XXzip und extrahieren Sie es in die
node_modules-Verzeichnis Ihres Knoteninstallationsstamms. Du musst
Erstellen Sie manuell einen Symlink im Knoteninstallationsstamm zu npm.cmd und
npx.cmd. Die endgültige Dateistruktur sollte ungefähr so ​​aussehen:

nvm

  • v8.5.0

    • Knotenmodule



      • npm





        • Behälter







          • npm.cmd




          • npx.cmd




            ...










    • node.exe

    • npm.cmd (Symlink zu v8.5.0 / node_modules / npm / bin / npm.cmd)

    • npx.cmd (Symlink zu v8.5.0 / node_modules / npm / bin / npx.cmd)

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-332523342 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AEZgRbY_GVys0bfnD_kaM_PYl6QUmZKDks5smk_PgaJpZM4PPcf-
.

Gerade aktualisiert 5.4.1 → 5.4.2 ohne Probleme.

c:\>npm install npm -g
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
C:\Program Files\nodejs\npm -> C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
+ [email protected]
removed 1 package and updated 2 packages in 12.125s

@kuncevic - danke ... das ist ein Hinweis darauf, dass das Problem innerhalb von npm 5.4.3+ liegen muss.

npm -g Installation [email protected] schlägt für mich
[Bearbeiten] Übrigens, das beginnt mit 5.3.0, das mit nvm install 8.5.0 installiert wurde

Am Freitag, 29. September 2017, um 11:41 Uhr, Corey Butler [email protected]
schrieb:

@kuncevic https://github.com/kuncevic - danke ... das ist bezeichnend für die
Problem muss innerhalb von npm 5.4.3+ sein.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-333161774 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AEZgRQnw_jxuz_dDZl3OsZVO_MNkHlBGks5snQ-qgaJpZM4PPcf-
.

Für mich schlägt es ab Knoten 8.4.0 und höher fehl. Es installiert NPM 5.3.0 und erlaubt mir dann nicht, es zu aktualisieren.
Ältere Node-Versionen (ich habe 4.8.4) ermöglichen es NPM, normal zu aktualisieren.

Mann. npm 5 und nvm saugen wirklich viel Zeit (aber ich beschuldige npm 5 hier, da 4 perfekt funktioniert). Ich habe letzte Woche ein Downgrade auf npm 4.6.1 durchgeführt und nur versucht, 5.4.2 erneut zu versuchen. Es sieht so aus, als ob npm deinstalliert wurde, als versucht wurde, react-native-cli zu installieren, ein völlig anderes Paket:

Manuel@Manuel-406 /cygdrive/d/htdocs/wallet
$ npm install -g react-native-cli
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm WARN Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules' }
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm',
npm ERR!   parent: 'v8.5.0' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Manuel\AppData\Roaming\npm-cache\_logs\2017-10-02T14_54_04_833Z-debug.log

Manuel@Manuel-406 /cygdrive/d/htdocs/_git/wallet
$ npm install -g react-native-cli
sh: npm: Kommando nicht gefunden.
  • ubuntu : 16.04.2 LTS
  • nodejs : 8.6.0
  • npm : 5.3.0
npm i -g npm<strong i="15">@latest</strong>

/home/user/.npm-global/bin/npm -> /home/user/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/user/.npm-global/bin/npx -> /home/user/.npm-global/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 68 packages, removed 164 packages and updated 14 packages in 14.307s

npm -v druckt immer noch 5.3.0 und es wird nicht aktualisiert?

@yavorski - das ist nvm für Windows. Ich denke du willst nvm für * nix .

Ich habe bestätigt, dass es sich bei diesem Problem um Sandboxing innerhalb von npm 5.xx handelt. Frühere Ausgaben von npm hatten dies nicht. Leider ist das Update nicht trivial und nach der Erfahrung von

Ja nein nvm in meinem Fall. Linux + Nodejs aus der Nodesource.

Das gleiche Problem hier haben ...

npm Version 5.4.2
Knotenversion 8.7.0
Fenster 10

Ich habe das gleiche Problem.

Windows 10
mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\"

und danach

npm i -g npm@latest

Für mich gelöst!

Ich habe ein ähnliches Verhalten mit Node v8.9.0. Es wird mit npm 5.5.1 geliefert. Wenn ich versuche, ein Downgrade auf npm 4 durchzuführen, wird der Fehler refusing to delete angezeigt.

Ich habe versucht, dies manuell zu beheben, indem ich npm aus der offiziellen Zip-Datei gezogen habe, und habe folgende Fehlermeldung erhalten:
image

Ich vermute, dass dieser Fehler stillschweigend auftritt und die Installation beschädigt. Wenn ich auf C:\nvm installiere, wird dieser Fehler nicht angezeigt und alles funktioniert wie erwartet.

@RichardMisiak Haben Sie versucht, die Installation nvm auf einen Pfad zu verschieben, der näher an C:\ ? Wie C:\nvm ? Es hat das Problem für mich geklärt.

Mit dem neuesten Knoten 9.1 , der standardmäßig die neuesten npm 5.5.1 bringt, macht es noch mehr "Spaß" https://github.com/npm/npm/issues/19019 , mit der nächsten npm Release es könnte behoben sein.

Meine Lösung ist NICHT sehr elegant, aber es funktioniert. Hier ist es.
Nach dem Ausführen von npm install [email protected] -g wurde der folgende Fehler angezeigt:

npm ERR! path d:\node\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete d:\node\npm.cmd: is outside d:\node\node_modules\npm and not a link
npm ERR! File exists: d:\node\npm.cmd
npm ERR! Move it away, and try again.
...

Meine Problemumgehung war folgende:

  1. npm install -g yarn
  2. Starte den Computer neu
  3. Führen Sie yarn global bin und fügen Sie den angezeigten Ordner zur PATH env-Variablen von Windows hinzu
  4. Gehen Sie zu dem Ordner, in dem sich npm.cmd befindet (überprüfen Sie dies anhand des Fehlers, den wir gerade beim npm install [email protected] -g -Lauf erhalten haben: d:\node\ in meinem Fall) und:
    2.1. Benennen Sie npm in npm.original (oder löschen Sie es einfach)
    2.1. Benennen Sie npm.cmd in npm.cmd.original (oder löschen Sie es einfach)
  5. Schließen Sie das Terminal und öffnen Sie ein neues
  6. yarn global add [email protected]
  7. npm install [email protected] -g (hiermit wird npm mit der npm-Version installiert, die sich im Ordner yarn global bin )
  8. yarn global remove npm (um die von yarn installierte npm-Version zu löschen und nur die von npm selbst installierte Version beizubehalten)

Benennen Sie den Stapel vor dem Upgrade einfach um:
Führen Sie cmd aus

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2 
npm2 install npm<strong i="7">@latest</strong> -g

Löschen Sie die Dateien nach dem Upgrade:

del npm2
del npm2.cmd

@ rolf-schmidiger Nach meiner Erfahrung musste ich mit npx und npx.cmd das gleiche umbenennen wie mit npm und npm.cmd.

Köstlich einfach und effektiv, @ rolf-schmidiger. Vielen Dank.

@coreybutler , eine Idee für eine Lösung? Nur neugierig. Kein Druck.

Keine der hier aufgeführten Lösungen funktionierte für mich, und am Ende war es schneller, die Knoteninstallation mit nvmw uninstall zu löschen und dann mit nvmw install zu installieren.

Ist nvmw ein völlig anderes Werkzeug?

@ thegreatco Ups ! Du hast recht. Interessant, dass bei beiden das gleiche Problem auftritt!

Basierend auf der Antwort von @ rolf-schmidiger habe ich ein Update-Skript dafür erstellt ... Ein bisschen schade, dass dies der einzige Weg ist, wie ich es zum Laufen bringen kann.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
mv npm.cmd npm2.cmd
mv npm npm2
npm2 install -g npm<strong i="6">@latest</strong>
rm npm2
rm npm2.cmd

AKTUALISIEREN

Dies ist das Neueste, das für mich funktioniert.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm<strong i="12">@latest</strong>
rm -rf node_modules/npm2/

Ich habe gerade alles zum ersten Mal installiert, daher scheint keiner der oben genannten Vorschläge auf mich zuzutreffen. Ich bekomme das immer wieder, wenn ich versuche, npx create-react-app auszuführen:

npx : The term 'npx' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows 10 Pro, Build 1703, Neuinstallation vor ca. 2 Wochen mit aktiviertem Entwicklermodus
Knotenversion 9.4.0
npm 5.6.0

Die Installationsanweisungen waren etwas verwirrend (es gibt mehrere Dateien zum Herunterladen, wofür ist diese Datei ohne Installation?), Aber ich habe schließlich herausgefunden, dass Sie nvm 'einschalten' und dann den Befehl 'use' ausgeben müssen (verwirrt) Ich, weil ich keinen separaten Paketmanager verwende, also dachte ich, dass dieser Teil nicht zutrifft. Aber dann erhalte ich immer noch den obigen Fehler.

Ich habe alles versucht. Ich habe nvm deinstalliert und eine andere Version installiert. Ich habe den Umgebungspfad überprüft und keine Ideen mehr. Ich habe endlich npm install -g npx und das scheint zu funktionieren. Scheiß drauf.

Ich entferne einfach die Dateien npm und npm.cmd vom Speicherort des Knotens, verschiebe dir node_modules/npm vom Speicherort des Knotens an einen anderen Speicherort und führe node npm-cli.js i -g npm@latest innerhalb von bin dir im verschobenen Ordner.

Ich habe gleiche Problem (Windows 10 - Umgebung) bei dem Versuch , meine Knoten 8.8.0 mit npm 5.5.1 Knoten 9.8.0 aber die Installation von Knoten zu aktualisieren 9.8.0 nicht meine npm von 5.5.1 auf die neueste aktualisieren. Danach versuche ich npm i -g npm und bekomme eine Fehlermeldung:

C:\Repository\myproject>npm i -g npm
npm WARN npm npm does not support Node.js v9.8.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[19860]: src\node_zlib.cc:436: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.
 1: node::DecodeWrite
 2: node::DecodeWrite
 3: uv_loop_size
 4: v8::internal::wasm::SignatureMap::Find
 5: v8::internal::Builtins::CallableFor
 6: v8::internal::Builtins::CallableFor
 7: v8::internal::Builtins::CallableFor
 8: 000003BEBC8843C1

Die Lösung von @arfaWong hat perfekt für mich funktioniert (ich habe ein bisschen mit der Lösung von @ rolf-schmidiger gemischt und umbenannt, anstatt mich zu bewegen)

Es ist sehr einfach. Wenn Sie unter Windows arbeiten, überprüfen Sie bitte https://github.com/felixrieseberg/npm-windows-upgrade
Wenn Sie dies manuell tun möchten, lesen Sie bitte die Dokumentation unter https://github.com/npm/npm/wiki/Troubleshooting#upgrade von -on-windows

Ich habe ein PowerShell-Skript zusammengestellt, um die Lösung von @arfaWong zu automatisieren: https://gist.github.com/noahleigh/ba34e18b3e0bc4a6a4e93ed7a480536e

Getestet auf PowerShell Core 6.0

Gleiches Problem mit

node-v8.6.0-win-x64
node-v9.9.0-win-x64

Wenn Sie die Datei umbenennen oder verschieben, kann der Ordner nicht erstellt werden. Führen Sie ihn erneut als Administrator aus. Abgesehen von der Tatsache, dass ich auf diesem Computer keine Administratorrechte habe, ist es zweifelhaft, dass dies etwas ändern würde, da der aktuelle Benutzer über mkdir-Berechtigungen in diesem Ordner verfügt ...

Wann wird das jemals behoben?

@arfaWong rockt !!

Ich habe cmder , nvm 1.1.6 und node 8.10.0 verwendet
Aktualisiert von npm 5.6.0 auf 5.8.0: tada:

cd %programfiles%/nodejs
rm npm npm.cmd
mv node_modules/npm node_modules/npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="17">@latest</strong> -g
rm -rf npm2

Vielen Dank für Ihre Lösung @ayvarot
Ich habe nvm 1.1.15 und Node 9.8.0 verwendet
Aktualisiert von 5.6.0 auf 5.8.0

Die Lösung von @ayvarot hat teilweise für mich funktioniert. Vielleicht aufgrund der Tatsache, dass ich es auf einer msys git bash mit ConEmu ausgeführt habe? Wie auch immer, das ist mein angepasstes Snippet:

which npm && \
    cd "`which npm | xargs -0 dirname`" && \
    mv npm npm2 && \
    mv npm.cmd npm2.cmd && \
    mv ./node_modules/npm ./node_modules/npm2 && \
    node node_modules/npm2/bin/npm-cli.js i npm<strong i="7">@latest</strong> -g && \
    rm -r npm2 npm2.cmd ./node_modules/npm2

npm -v

(Verwenden von nvm 1.1.6 auf Knoten 8.10.0 x32 und Aktualisieren von npm 5.6.0 auf 5.8.0)

@arfaWong Das hat funktioniert ... Obwohl nicht das ideale ...
Warten Sie, bis das npm-Team das Problem behoben hat ...
.
Konfrontiert mit npm 5.6.0

Eine einfache Windows DOS-Version von @ayvarot

pushd %ProgramFiles%\nodejs
del npm npm.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="8">@latest</strong> -g
rd node_modules\npm2 /S /Q
popd

@arfaWong Lösung hat wie ein Zauber funktioniert, danke!

Windows 10:
cd (dein nodejs Ordner)
ren npm.cmd npm2.cmd
del npm
del npx

npm2 installiere npm -g

del npm2.cmd

Ich habe gerade npm und npx übrigens umbenannt und sie anschließend gelöscht, aber ich denke, sie könnten einfach sofort gelöscht werden.

Dies scheint nun durch die Installation von Nodejs Version 10.0.0 mit nvm ausgelöst zu werden.

@arfaWong Die einzige Lösung, die Jungs funktioniert hat. Probieren Sie es aus.

@ rolf-schmidiger hat für mich gearbeitet! Dankeschön

Ich habe das umgangen, indem ich Garn verwendet habe, das ich bereits installiert hatte.

nvm use 10.0.0

# Have npm remove itself
npm uninstall -g npm

# Install npm into the yarn directory structure
yarn global add npm

# Use npm to install itself into the nodejs directory structure
npm install -g npm

# Remove the yarn installation of npm
yarn global remove npm

Das hat bei mir funktioniert:

nvm use <some_other_version>
cd .../nvm/<version_to_update>
npm un npm
npm i npm<strong i="6">@latest</strong>

Verwenden Sie Garn anstelle von npm selbst. Versuchen Sie yarn global add npm@latest und versuchen Sie, das Garn zu aktualisieren, wenn dies fehlschlägt.

Ich habe auch den Fehler " Verweigern des npm install npm<strong i="6">@latest</strong> --global zu aktualisieren.

Das npm-windows-upgrade-Paket konnte ebenfalls nicht aktualisiert werden, was darauf hindeutet, Node.js neu zu installieren, obwohl es sich um eine neue Entpackungsinstallation handelt.

Ich konnte ein Upgrade durchführen, indem ich die npm- und npx-Dateien wie zuvor vorgeschlagen mithilfe dieses PowerShell-Skripts verschob:

# Locate the Node.js installation
# containing the npm and npx files that are preventing the upgrade
Get-Command node.exe | % { Split-Path $_.Source } | cd

$CurrentNpmVersion = npm --version

# Version the current npm scripts to make room for the new version:
"npm", "npm.cmd", "npx", "npx.cmd" | %{ Get-ChildItem -Filter $_ } |
  Rename-Item -NewName { "$($_.BaseName)-$CurrentNpmVersion$($_.Extension)" }

# Use the current npm command to install the new version:
Invoke-Expression "npm-$($CurrentNpmVersion).cmd install npm<strong i="11">@latest</strong> --global"

Hallo @awarberg, ich habe dein Skript ausprobiert, aber ich erhalte diesen Fehler. Ich habe es auch mit Garn versucht, kein Glück ... dummes Windows! 💢

.\update_node.ps1
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno: is outside C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\errno and not a link
npm ERR! File exists: C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\vitom\AppData\Roaming\npm-cache\_logs\2018-05-11T12_55_55_902Z-debug.log

@lamuertepeluda Entschuldigung, dass Sie immer noch kein Upgrade durchführen können. Die erwähnte Datei ...\node_modules\.bin\errno wurde zuvor nicht erwähnt. Dies kann aufgrund mehrerer Upgrade-Versuche eine beschädigte Installation sein. Möglicherweise ist dies ein guter Zeitpunkt, um es neu zu installieren, wie npm-windows-upgrade vorschlägt.

Was "dummes Windows" betrifft, stimme ich nicht zu. Wahrscheinlicher ist, dass NPM zuerst für Linux entwickelt wurde und die Windows-Unterstützung später nachträglich eingestellt wurde. Ich sehe dies regelmäßig auch in anderen NPM-Paketen. Typische Probleme sind schwierig zu installieren und erfordern manuelle und nicht dokumentierte Schritte, um die Softwarevoraussetzungen sicherzustellen. Ein weiteres häufiges Problem ist das Dateisystem-Pathing zwischen Groß- und Kleinschreibung.

Ich habe ein Batch-Skript erstellt, um die Lösung von @arfaWong automatisch

<strong i="7">@echo</strong> off
SETLOCAL EnableDelayedExpansion

if [%1] == [] (
    echo Pass in the version you would like to install, or "latest" to install the latest npm version.
) else (
    set wanted_version=%1

    if "!wanted_version!" == "latest" (
        for /f %%i in ('npm show npm version') do set wanted_version=%%i
    )

    for /f %%i in ('npm -g -v') do set cur_version=%%i

    if "!cur_version!" == "!wanted_version!" (
        echo Already on npm version !wanted_version!.
    ) else (
        echo Updating to !wanted_version!...

        set node_path=!PROGRAMFILES!\nodejs

        rename "!node_path!\npm" npm2
        rename "!node_path!\npm.cmd" npm2.cmd
        rename "!node_path!\node_modules\npm" npm2
        node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g

        for /f %%i in ('npm -g -v') do set new_version=%%i

        echo New version installed is !new_version!

        if "!new_version!" == "!wanted_version!" (
            echo Successfully updated to !wanted_version!. Cleaning up backups...
            del "!node_path!\npm2"
            del "!node_path!\npm2.cmd"
            <strong i="8">@RD</strong> /S /Q "!node_path!\node_modules\npm2"
            echo Update complete.
        ) else (
            echo Something went wrong. Rolling back.
            if exist "!node_path!\npm" (
                del "!node_path!\npm"
            )
            if exist "!node_path!\npm.cmd" (
                del "!node_path!\npm.cmd"
            )
            if exist "!node_path!\node_modules\npm" (
                <strong i="9">@RD</strong> /S /Q "!node_path!\node_modules\npm"
            )
            rename "!node_path!\npm2" npm
            rename "!node_path!\npm2.cmd" npm.cmd
            rename "!node_path!\node_modules\npm2" npm
        )
    )
)

Ich habe einen Kern aus @kufiis Fledermaus-Skript erstellt. Leicht geändert, sodass Sie die zu installierende Version angeben können, anstatt immer lastet zu installieren.

https://gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530

--Edit: Aktualisiert, um das oben aktualisierte Skript von

@johnmcase gute Idee, ich habe meinen Kommentar aktualisiert, damit Sie die Version, die Sie installieren möchten, als Argument übergeben können (oder "neueste", um die neueste Version zu erhalten).

Die aktualisierte Version von @kufii funktioniert für mich besser, als die gewünschte Nummer im Skript fest zu

@kufii @arfaWong

Vielen Dank!!
notworthy

@ Johnmcase Worked mochte einen Charme, Lesezeichen.

Es wurde nur ein Problem mit diesem Skript gefunden: Als ich mich für die Installation von 5.6 habe, wurde 5.6.0 erfolgreich installiert und es wurde ein Rollback durchgeführt, da "5.6" von "5.6.0" abweicht ...
Vielen Dank für das Skript!

Hatte kürzlich wieder das gleiche Problem mit NVM Version 1.1.7
Die Lösung von @arfaWong und @ayvarot hat das letzte Mal funktioniert. Aber diesmal wurde Idkw der npm-Ordner nicht gefunden. Daher empfehle ich, den Ordner npm2 nicht für alle Fälle zu löschen.

Ich habe gerade fast zwei Tage damit verbracht, Fehler zu debuggen, die durch dieses Problem verursacht wurden, und fast jede Korrektur versucht, um mein NPM von 5.6.0 auf 6.1.0 zu aktualisieren. @arfaWongs Fix funktionierte für mich ohne weitere Probleme. Vielen Dank!

@arfaWong Works !!

Ich habe die Garnmethode gewählt, aber das sollte auch funktionieren:

  1. Holen Sie sich npm von https://github.com/npm/cli/releases
  2. Führen Sie Folgendes aus dem Verzeichnis aus, in das Sie es aus dem Ordner bin extrahiert haben

    • node npm-cli.js i -g npm@latest

    • Es kann sich darüber beschweren, dass Dateien gelöscht werden müssen. Ich hatte meine nvm und nodejs in einem Stammverzeichnis auf meinem Laufwerk, sodass der Speicherort der Standardprogrammdatei für mich nicht anwendbar ist. Ich habe die npm / npx / node_modules aus meinem nodejs-Ordner entfernt (ich habe keine Angst, Pakete erneut herunterzuladen, und ich arbeite jetzt sowieso mit einer Neuinstallation).

  3. Es sollte ordnungsgemäß installiert werden und Sie sollten in der Lage sein, den extrahierten Ordner zu löschen und davon zu profitieren!

Ziemlich ähnlich zu diesem Stackoverflow, den ich geschrieben habe.
https://stackoverflow.com/questions/49748307/how-to-reinstall-npm

@ayvarot Vielen Dank !!!!!!!! Ihr Rat funktioniert für mich unter Windows 10.

Ich habe nur %Node%\npm.cmd , %Node%\npm und %Node%\npx.cmd war keine Umbenennung des Verzeichnisses erforderlich.

Auch hier schlägt die von
https://github.com/coreybutler/nvm-windows/issues/389

Aus irgendeinem Grund funktionierte das obige Skript nicht für mich und ich war einfach zu müde, dies zu lösen, um herauszufinden, warum.

Dieser lächerliche Fehler besteht immer noch, also habe ich ein Skript erstellt, das die Arbeit erledigt. Muss in einem Knotenordner abgelegt werden, in dem npm.cmd leben.

:: Update NPM with workaround of "npm ERR! code EEXIST" bug https://github.com/coreybutler/nvm-windows/issues/300

<strong i="7">@ECHO</strong> OFF

SETLOCAL

SET CDir=%~dp0%

REN "%CDir%\npm.cmd" "npm1.cmd"
DEL "%CDir%\npm"
DEL "%CDir%\npx.cmd"
DEL "%CDir%\npx"

CALL "%CDir%\npm1.cmd" update && DEL "%CDir%\npm1.cmd"

Speichern Sie dies als npmup.cmd und verwenden Sie es anstelle von npm update

bei Verwendung des Skripts von @kufii
Beachten Sie, dass der Installationsort ersetzt werden sollte, wenn Sie den Pfad von node.js wie ich geändert haben. Ersetzen Sie einfach den Code set node_path=!PROGRAMFILES!\nodejs durch set node_path=YOUR_NODE_PATH

Die @kraihn- Lösung funktioniert jetzt nicht mit dem neuesten Garn, es sei denn, Sie fügen dem Pfad einen Garnbehälter hinzu:

  1. Holen Sie sich den Behälter path von yarn global bin
  2. Kleben Sie den Garnbehälter path in Ihre Variable path

Einmal im Jahr bin ich aufgeregt, entscheide mich, NVM unter Windows zu installieren und denke, "diesmal wird es funktionieren", aber es ist immer etwas kaputt ... Na ja, ich denke, es ist zurück zum klassischen Installationsprogramm von Node.j. Ich würde WSL verwenden, aber leider erfordern einige Electron-Apps, dass Node auf dem Host-Betriebssystem installiert ist.

Ist dies wirklich allein durch NVM nicht zu beheben?
Soweit ich in verschiedenen Threads gelesen habe, wäre es auch ein npm- oder Node-Problem, aber kann NVM allein nichts dagegen tun? Andernfalls macht dieses Problem NVM unter Windows unbrauchbar.
Es ist keine Lösung, Dateien während des Aktualisierungsprozesses selbst löschen oder sogar Skripte für diese oder die von einigen Personen erwähnten Problemumgehungen erstellen zu müssen. Es ist die Hölle!
Das einzige, was ich versucht habe (ein Kommentar in einem anderen Thread, nicht in diesem, der einige Schritte zur Verwendung von Garn zum Hinzufügen von npm erwähnt), hat nicht funktioniert.

@ MrCroft Ich stimme zwar zu, dass es schön wäre, wenn es "nur funktioniert", aber die Dinge sind weit entfernt von der "Hölle" und noch weiter davon entfernt, "nutzlos" zu sein.
Ich bin seit ungefähr 2 Jahren ein glücklicher Benutzer dieses Projekts.
Dieses Problem tritt nur auf, wenn Sie die globale npm selbst aktualisieren möchten. Das Installieren neuer Knotenversionen über nvm ist kein Problem und neue Knoten werden mit neueren npm-Paketen geliefert.
Wenn Sie feststellen, dass Sie npm in Ihrer Entwicklungsumgebung so oft aktualisieren, dass Ihr Leben dadurch zur Hölle wird, dann machen Sie wahrscheinlich etwas falsch.
Ich denke, nur zweimal, seit ich ein NVM-Benutzer wurde, musste ich npm selbst aktualisieren und dieses Problem lösen. Nicht so schlimm, wie du es klingen lässt.

Hier ist mein Skript zum Aktualisieren von npm auf nvm:

https://stackoverflow.com/a/50955293/491553

Ich habe es gerade bei einer Neuinstallation gemacht. Funktioniert super.

Vielleicht sollte jemand den npm-Updater OHNE ADMIN- RECHTE

Ich denke, dies ist eher ein früherer npm- Versionsfehler als ein nvm- Fehler.

Um npm zu aktualisieren, löschen Sie die folgenden Dateien im Ordner nvm/[node version] (für mich ist es v10.15.3 ):

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm.cmd
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx.cmd

Umbenennen npm Ordner npm2

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2

Öffnen Sie eine Konsole mit Administratorrechten (oder klicken Sie mit der rechten Maustaste auf die Verknüpfung vscode, als mit der rechten Maustaste auf Visual Studio Code und klicken Sie auf Als Administrator ausführen) und geben Sie die folgenden Befehle ein:

cd C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2\bin
node npm-cli.js i -g npm<strong i="22">@latest</strong>

Update: Wie @ Fr0sT-Brutal betonte, sollten zu diesem Zeitpunkt keine Administratorrechte erforderlich sein, da wir gerade Dateien gelöscht haben, die Konflikte verursacht haben 👍

Getan.

Löschen Sie den Ordner C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2 .

(Dies ist nur Schritt für Schritt zu reproduzieren, was @ 19majkel94 oben gesagt hat)

@createdbyjurand : OHNE Administratorrechte ...
Sie benötigen keine Administratorrechte, um eine Reihe von Dateien durch eine andere Reihe von Dateien zu ersetzen ...
(solange Sie Schreibzugriff auf die Dateien / Verzeichnisse haben)

@createdbyjurand : OHNE Administratorrechte ...
Sie benötigen keine Administratorrechte, um eine Reihe von Dateien durch eine andere Reihe von Dateien zu ersetzen ...
(solange Sie Schreibzugriff auf die Dateien / Verzeichnisse haben)

Ich weiß. Der Ordner "Programme" unter Windows 10 verfügt jedoch über bestimmte Rechte. Aus diesem Grund installieren sich in letzter Zeit viele Apps in Roaming- oder lokalen Ordnern. Sogar Visual Studio Code verfügt über zwei separate Installationen. Eine für lokale und eine für Programmdateien. Eine Möglichkeit, dies zu umgehen, besteht darin, den Speicherort des Ordners nvm nodejs zu ändern. Zweitens ändern Sie die Optionen für die Ordnersicherheit, aber dadurch wird dieser Ordner unsicher. Was ich geschrieben habe, was @ 19majkel94 geschrieben hat, ist eine Lösung, um das npm-Update so zu reparieren, wie es ist. Dabei wird die Standard-NVM-Installation mit Standardeinstellungen für Benutzer verwendet, die das Problem nur beheben möchten, ohne immer mehr System- oder Konfigurationsänderungen vorzunehmen. Denn selbst wenn Sie Ordner- oder Zugriffsrechte ändern, müssen Sie alle aufgeführten Schritte ausführen. Die einzige Änderung besteht darin, die Konsole ohne Administratorrechte zu verwenden.

@createdbyjurand : Nur gesagt, wir führen Node in einer Unternehmensumgebung aus und als Entwickler haben wir keine Administratorrechte. Wenn ein npm-Update oder ein darin enthaltenes Skript Administratorrechte erfordert, bricht dies unsere Entwicklungsumgebung, und wir können keine Knotenpakete installieren und dann nicht arbeiten.

@createdbyjurand wofür brauchst du Administratorrechte?

@createdbyjurand wofür brauchst du Administratorrechte?

Guter Punkt, ich nicht, weil ich gerade Dateien gelöscht habe, die Konflikte verursacht haben 👍

Oh ich verstehe. Ich hätte nie gedacht, NPM in PF zu installieren, für mich ist das ziemlich seltsam. Ich würde sagen, diejenigen, die es tun, sind die Gründe für ihre Probleme :).

Oh ich verstehe. Ich hätte nie gedacht, NPM in PF zu installieren, für mich ist das ziemlich seltsam. Ich würde sagen, diejenigen, die es tun, sind die Gründe für ihre Probleme :).

Vor kurzem ja. Microsoft hat die Zugriffsrechte für den Ordner " Programme" geändert. Aus diesem Grund bewegt sich eine Menge Software jetzt in Richtung Roaming oder Installationsverzeichnis für lokale Ordner. Und deshalb hat vor nicht allzu langer Zeit mit npm alles gut funktioniert, und jetzt bekommen wir plötzlich folgendes:

$ npm i -g npm<strong i="11">@latest</strong>
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\fehTH4RTH\AppData\Roaming\npm-cache\_logs\2019-03-22T14_28_26_153Z-debug.log

Oh ich verstehe. Ich hätte nie gedacht, NPM in PF zu installieren, für mich ist das ziemlich seltsam. Ich würde sagen, diejenigen, die es tun, sind die Gründe für ihre Probleme :)

@ Fr0sT-Brutal gut, aus organisatorischen Gründen mache ich es auch. Wenn ich bereits einen Systemordner für Anwendungen (Programme) habe, installiere ich ihn bei jeder Installation im Ordner "Programme". Insbesondere, um den Stammordner des Laufwerks nicht mit zufälligen Ordnern wie "nodejs" oder "nvm" zu verschmutzen und auch nicht zu langen Pfaden wie "c: / Benutzer / Mein Name / Roaming / Anwendungsdaten / was auch immer" zu gelangen, bevorzuge ich einfach "c : / Programme / was auch immer ".
Trotzdem, obwohl es mich wirklich nervt hätte, so zu arbeiten (habe nvm | node an einem Ort außerhalb der Programmdateien), habe ich es zumindest versucht und in c: / nvm installiert (wie für Knotenversionen habe ich sowohl c: / node als auch als Unterordner von nvm: c: / nvm / node so etwas ausprobiert). Das Problem blieb jedoch bestehen. Npm konnte immer noch nicht aktualisiert werden, indem npm i -g npm . Gott sei Dank, denn ich möchte nicht mit Dingen leben, die außerhalb des Ordners "Programme" installiert sind. Natürlich habe ich endlich aufgegeben und immer noch 1 Version des Knotens verwendet, die mit dem Standard-Knoteninstallationsprogramm für Windows von nodejs.org installiert wurde

@createdbyjurand vor kurzem? IIRC, PF wurde seit XP für einen Benutzer schreibgeschützt.
@ MrCroft Ich

Sie müssen es nicht hineinstecken
C:/Users/My Name/Roaming/Whatever
Sie können jedes Verzeichnis verwenden, solange es vom Benutzer beschreibbar ist.

Ich habe alle Programme auf D: Programme, keines von ihnen erfordert Administratorrechte, einschließlich NodeJS, Python, Cmake, JetBrains, Go, OpenOffice usw.

Dann habe ich sie alle in die Pfadumgebungsvariablen und die Registrierung für current_user eingefügt.
Klappt wunderbar.
Keine beschissenen Blackbox-Installer erforderlich.

Wenn ich etwas finden muss, verwende ich locore32 und durchsuche nicht einmal die Ordner / Desktop / StartMenu.
Locate32 ist einfach viel schneller.
Oder ich führe sie über STRG + R aus, da Sie die Aliase in der Registrierung in HKCU festlegen können.

Der einzige Grund, etwas in C:\ProgramFiles ist, wenn Sie eine bestimmte Anwendung für jeden Benutzer auf dem Computer installieren möchten, was Sie als Entwickler in den meisten Fällen nicht möchten, da sich Programme in einem systemweiten Pfad / einer systemweiten Registrierung befinden Dies kann die Programme anderer Benutzer beschädigen oder deren Fähigkeit beeinträchtigen, eine andere Version als die von Ihnen verwendete Version zu verwenden. Außerdem ist es auf dem Server praktisch - Benutzer1 kann seine Knotenjs verwenden, Benutzer2 andere Knotenjs, und es beißt sich nicht selbst.

Indem Sie Administratorrechte entfernen und alles im Benutzer behalten, stellen Sie sicher, dass ein Benutzer die Programme und Einstellungen eines anderen Benutzers nicht beschädigen kann. Außerdem stellen Sie sicher, dass Ihre Anwendungen ohne Administratorrechte ausgeführt werden, was manchmal nützlich sein kann. Im schlimmsten Fall können Sie ein Benutzerkonto jederzeit löschen, löschen und später neu bewerten.

Auf diese Weise kann ich ungefähr 1'000 Programme ausführen, ohne eine Minute für die Installation aufzuwenden.
Sogar JetBrains IDE und PostgreSQL funktionieren so.
Die einzigen Programme, die ich so nicht zum Laufen bringen konnte, sind MS-Office, SQL-Server und Visual-Studio.
npm sollte nicht zu dieser verrufenen Liste hinzugefügt werden, und das alles, weil es nicht die Mühe macht, einige vorhandene Dateien zu verschieben, anstatt sie zu überschreiben.

Wie auch immer, ich habe jetzt mein eigenes nodejs-update-Skript , das den

Ich habe diese Dateien gerade in "1" umbenannt.
npm1.cmd, npm1, npx1, npx1.cmd

und rannte:
" npm1 update -g "

Es sieht so aus, als hätte es gut funktioniert, irgendwelche Gedanken?

Vielleicht kann dies in nvm integriert werden - vielleicht durch Hinzufügen eines npm-Versionsflags zusammen mit dem Knotenversions- und Architekturflag bei der Installation und einer update-nvm-Funktion

Ich habe diese Dateien gerade in "1" umbenannt.
npm1.cmd, npm1, npx1, npx1.cmd

und rannte:
" npm1 update -g "

Es sieht so aus, als hätte es gut funktioniert, irgendwelche Gedanken?

Es hat auch bei mir funktioniert, aber ich musste den Ordner löschen
nvmv10.15.3node_modulesnpmnode_modules.bin
weil der Fehler, der auf diesen Ordner verweist, immer noch auftrat.

Vielen Dank!

Hey Leute, ich habe ein Paket zum Aktualisieren der lokalen npm-Version von Program Filesnodejs erstellt
Auschecken
npm install -g npm-win-upgrade
npm-win-upgrade

Ich bin mir nicht sicher, ob es überhaupt mit NVM kompatibel ist, aber es verwendet process.execPath, um den Ordner node.exe zu finden.

@dolpsdw Beim Ausführen von npm-win-upgrade folgende Fehlermeldung angezeigt :

Npm instaled as Global package: uninstalling...                                                                     
(node:10192) UnhandledPromiseRejectionWarning: Error: Command failed: npm uninstall npm -g                          
npm ERR! path C:\Program Files\nodejs\npx.cmd                                                                       
npm ERR! code EEXIST                                                                                                
npm ERR! Refusing to delete C:\Program Files\nodejs\npx.cmd: is outside C:\Program Files\nodejs\node_modules\npm and
 not a link                                                                                                         
npm ERR! File exists: C:\Program Files\nodejs\npx.cmd                                                               
npm ERR! Move it away, and try again.                                                                               

npm ERR! A complete log of this run can be found in:                                                                
npm ERR!     C:\Users\sjodle\AppData\Roaming\npm-cache\_logs\2019-04-23T17_42_11_305Z-debug.log                     

    at ChildProcess.exithandler (child_process.js:281:12)                                                           
    at emitTwo (events.js:126:13)                                                                                   
    at ChildProcess.emit (events.js:214:7)                                                                          
    at maybeClose (internal/child_process.js:915:16)                                                                
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)                                        
(node:10192) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing
 inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)                                                                                                    
(node:10192) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejec
tions that are not handled will terminate the Node.js process with a non-zero exit code.                            

Hallo @sodle ,

Der erste Fehler (Knoten: 10192 Befehl fehlgeschlagen: npm deinstalliert npm -g): Er tritt auf, weil npm im Ordner% appdata% npm als global installiert erkannt wurde. Dies kann jedoch der Rest des alten Knotencaches sein. Dies könnte mit einer npm list -g Erkennung behoben werden.

Über den zweiten Fehler klingt für mich der Fehler 'Löschen verweigern' ... wie die Administratorrechte, bei denen keine Berechtigung vorliegt. (UAC-Eingabeaufforderung wurde abgelehnt?)

Versuchen Sie, das Skript auszuführen und die Skalierung der Administratorrechte zu akzeptieren. Wenn dies nicht behoben wird, teilen Sie mir bitte Ihre Knotenversion von Origin mit, um den Fehler zu reproduzieren.

@dolpsdw Ich bin mir ziemlich sicher, dass beide Teil desselben Fehlers sind - npm weigert sich, die Datei zu löschen, weil sie verlegt ist oder so.

Auf jeden Fall habe ich nicht mehr die Maschine, auf der der Fehler aufgetreten ist. Ich werde Sie wissen lassen, wenn ich beim Ersetzen auf dieselben Probleme stoße.

Hallo @rsshilli
Vielen Dank für die Bereitstellung des Skripts. Es funktioniert ganz gut und aktualisiert npm wie gewünscht auf die neueste Version.
Das einzige kleine Problem, mit dem ich konfrontiert war, war, dass das Ausführen von npm list -g --depth=0 zum Auflisten aller Knotenpakete zu zwei Installationen von npm führte.
Also habe ich einfach einige Codezeilen hinzugefügt, um die "...- alten" umbenannten Dateien und den "...- alten" umbenannten Ordner zu entfernen.
Das Ausführen von npm list -g --depth=0 zum Auflisten aller Knotenpakete führte wie gewünscht zu einer einzigen Installation von npm.
Hier ist meine aktualisierte Version Ihres Skripts:
cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js install -g npm@latest

cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

Hier ist mein Skript zum Aktualisieren von npm auf nvm:

https://stackoverflow.com/a/50955293/491553

Ich habe es gerade bei einer Neuinstallation gemacht. Funktioniert super.

@dolpsdw npm-win-upgrade mit denselben Fehlern wie npm install -g npm fehlgeschlagen.
Es gibt ein anderes Paket npm-windows-upgrade , das ebenfalls fehlschlägt, aber nicht sagt, warum (ich nehme an, es ist dasselbe).

@ Markus-Hanisch @rsshilli Danke für das Skript.

Ausgehend davon möchte ich das folgende allgemeine Powershell-Skript hinzufügen, mit dem Sie NPM unabhängig von Ihrer aktuellen Knotenversion und Ihrem NVM-Speicherort aktualisieren können:

Push-Location (Join-Path (Split-Path (Get-Command nvm).Path) (node --version))
  Move-Item npm npm-old
  Move-Item npm.cmd npm-old.cmd
  Move-Item npx.cmd npx-old.cmd
  Push-Location .\node_modules
    Move-Item npm npm-old
    Push-Location .\npm-old\bin
      node npm-cli.js install -g npm<strong i="8">@latest</strong>
    Pop-Location
    Remove-Item npm-old -Recurse
  Pop-Location
  Remove-Item npx-old.cmd
  Remove-Item npm-old.cmd
  Remove-Item npm-old -Recurse
Pop-Location

(Die einzige Annahme ist, dass nvm seine Versionen neben seiner exe-Datei speichert und sie entsprechend der Ausgabe von node --version benennt.)

Lesen Sie diesen Thread durch; Am Ende hatte ich das beste Glück, node.js mithilfe von Programmen zum Hinzufügen / Entfernen zu deinstallieren und neu zu installieren.

Das Problem wurde für mich wie vor einem Jahr durch Einschalten des Mac behoben;)

@kuncevic

Das Problem wurde für mich wie vor einem Jahr durch Einschalten des Mac behoben;)

Korrigiert:
Das Problem wurde von mir wie vor einem Jahr durch das Einschalten des Mac
:rofl:

@kuncevic , @ Fr0sT-Brutal:
Und indem Sie Ihre Wahlfreiheit in Bezug auf Hardware aufgeben.
Kein guter Kompromiss.
Außerdem geben Sie Ihre Kontrolle über die auf Ihrem Computer ausgeführte Software auf.
Wenn Sie irgendwo wechseln müssen, wechseln Sie zu Linux - das ist die viel bessere Wahl, für Server-Sachen sowieso.

https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

Ich habe nvm für Windows gelöscht. Nach 2 Jahren funktioniert es auch mit der neuesten Knotenversion immer noch nicht richtig

Leute, dies ist ein npm-Problem, kein NVM4W-Problem. Hierfür gibt es ein Hilfsprogramm, das unter https://github.com/felixrieseberg/npm-windows-upgrade verfügbar ist

Ich habe diese Dateien gerade in "1" umbenannt.
npm1.cmd, npm1, npx1, npx1.cmd

und rannte:
" npm1 update -g "

Benennen Sie einfach die Datei npm1.cmd , es reicht. Führen Sie dann das Update npm .

Sie müssen npm-windows-upgrade .

@coreybutler Davon bin ich nicht ganz überzeugt. npm-windows-upgrade hat bei mir node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm anfangs und npm install -g npm für ein späteres Update ohne manuelles Eingreifen . Es scheint, als ob die anfängliche npm-Installation irgendwie kaputt ist.

Selbst wenn dies irgendwie der Fehler von npm ist, ein defektes Installationsprogramm oder etwas anderes als das von nvm zu haben, könnte ein Schritt, den nvm zur Behebung des Problems unternehmen könnte, darin bestehen, diese Skripte selbst zu löschen und beim Erstellen der Erstversionsumgebung sofort ein Update aufzurufen. Zumindest könnte es eine Option oder einen Befehl dazu bieten.

@kuncevic Vorschlag zur Verbesserung Ihrer Anweisungen:

Anstatt Dateien hin und her zu kopieren oder zu versuchen, sie schnell genug zu verschieben, während der Prozess ausgeführt wird, rufen Sie einfach das Skript von npm direkt mit dem Befehl node auf.

Power Shell:

node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm

Eingabeaufforderung:

node "%NVM_SYMLINK%\node_modules\npm\lib\npm.js" install -g npm

Dann können Sie die Dateien einfach einmal entfernen und den Vorgang neu starten, ohne sie bei Bedarf zurückzusetzen.

@ Bladeoflight16 Ich habe es versucht, aber diesen Fehler bekommen.

C:\Users\woonk>node %NVM_SYMLINK%\node_modules\npm\lib\npm.js install -g npm
internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

@ mattdamon108 Entschuldigung. Sie müssen den Pfad in cmd angeben, wenn er Leerzeichen enthält. Ich habe den Beitrag aktualisiert. Vielen Dank.

Ich habe diesen Fehler unter Windows erhalten und wollte für ein Projekt auf ein älteres npm zurückgreifen. Auf sehr milde Weise bin ich einfach zum bereits gebildeten Symlink-Speicherort des Befehls npm gegangen und habe den Ordner npm in node_modules in seinen eigenen Versionsnamen umbenannt und dann heruntergeladen die Version, die ich brauchte und einen Ordner namens npm und den heruntergeladenen Inhalt dort ablegte, was funktionierte!

@coreybutler Ihr Vorschlag, einen Symlink zu erstellen, hat nicht funktioniert, da Windows sich darüber beschwert hat, dass bereits ein Symlink vorhanden ist. Auch in Windows ist es schwierig, einen Symlink schnell zu bearbeiten. Außerdem musste ich regelmäßig zwischen den beiden Versionen von npm wechseln. Daher habe ich das getan.

Ich habe diese Dateien gerade in "1" umbenannt.
npm1.cmd, npm1, npx1, npx1.cmd
und rannte:
" npm1 update -g "

Benennen Sie einfach die Datei npm1.cmd , es reicht. Führen Sie dann das Update npm .

Sie müssen npm-windows-upgrade .

@xmedeko @chidveer Vielleicht fehlt mir hier etwas, aber ist npx npm-windows-upgrade einfacher als das manuelle Umbenennen von Dateien vor dem Ausführen von npm update ?

@jakobrosenberg npm-windows-upgrade hat bei mir nicht funktioniert. Vielleicht habe ich etwas falsch gemacht, vielleicht habe ich versucht, ein Upgrade durchzuführen , oder was auch immer. IMO eine Datei umzubenennen ist einfacher als zu studieren, warum npm-windows-upgrade nicht funktioniert und wie man es behebt.

Hinweis: Es wird empfohlen, npm-windows-upgrade global zu verwenden, sodass Sie es als npm-windows-upgrade und nicht als npx npm-windows-upgrade ausführen.

@xmedeko würde npx npm-windows-upgrade nicht global ausgeführt, es sei denn, Sie befinden sich in einem Knotenprojekt mit einer lokalen Installation von npm-windows-upgrade ?

@jakobrosenberg Ja, Sie haben Recht, ich wusste nicht, dass sich npx verhält. Ich verwende es immer nur für lokale Projektpakete.

wirkt wie Charme
Stellen Sie nur sicher, dass 'set node_path =! PROGRAMFILES! nodejs' in Ihrem Fall auf den richtigen Pfad zeigt
speziell für den Fall, dass keine Standardinstallation vorhanden ist (Zip-Extrakt)

Gleicher Fehler!
wie ich es gelöst habe:

  1. Systemsteuerung => Programm deinstallieren
  2. Löschen Sie die NodeJS-App
  3. Löschen Sie alle NodeJS-Ordner in Programmdateien
  4. Neuinstallationsknoten JS

Ich brauchte nur Schritt 4, dh einfach Node JS herunterladen und neu installieren.
Dann hat es funktioniert.

Die Neuinstallation der Knotenversion funktioniert einwandfrei. Da dies jedoch ein Problem im Zusammenhang mit nvm , können Sie das Problem mit der Leistung von nvm beheben. Anstatt Programme hinzuzufügen / zu entfernen, war es für mich viel schneller / einfacher, alles in der Befehlszeile zu belassen. Zum Beispiel:

nvm uninstall VERSION
nvm install VERSION

Schließen Sie danach die Schale und öffnen Sie sie erneut. Schnell und einfach (zumindest jetzt, wo Sie es wissen). 😄

Wenn Sie Probleme haben (z. B. nvm zeigt an, dass die Version bereits installiert ist), überprüfen Sie, ob der dieser Version zugeordnete Ordner noch vorhanden ist (z. B. %NVM_HOME%\VERSION ) und ob die Datei node.exe ist noch nicht da. Wenn es noch vorhanden ist, stellen Sie sicher, dass Sie noch keine Apps haben, auf denen möglicherweise ein Knoten ausgeführt wird (z. B. in meinem Fall wurde es von meiner IDE ausgeführt, sodass ich das geschlossen habe und es vollständig entfernen konnte).

BEARBEITEN : ⚠️ Ich nehme an, diese einfache Lösung hat einen wichtigen Nebeneffekt: Sie entfernt Ihre global installierten Pakete ... hmm ... möglicherweise ist es noch einfacher, diese manuell neu zu installieren. Sei gewarnt! ⚠️

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen