Probleme bei der Installation von Node und NPM über Homebrew

Ab Montagmorgen ist das Ausführen der Befehle nodemonund npm run devfür ein Projekt, an dem ich arbeite, fehlgeschlagen, und ich habe es auf einen Fehler mit NPM selbst zurückgeführt.

macbookpro@MacBookPro:/usr/local/lib$ npm -v
internal/modules/cjs/loader.js:983
throw err;
^
Error: Cannot find module '../lib/utils/unsupported.js'
Require stack:
- /usr/local/lib/node_modules/npm/bin/npm-cli.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
at Function.Module._load (internal/modules/cjs/loader.js:862:27)
at Module.require (internal/modules/cjs/loader.js:1040:19)
at require (internal/modules/cjs/helpers.js:72:18)
at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
at Module._compile (internal/modules/cjs/loader.js:1151:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/usr/local/lib/node_modules/npm/bin/npm-cli.js' ]
}
macbookpro@MacBookPro:/usr/local/lib$ node -v
v13.8.0
macbookpro@MacBookPro:/usr/local/lib$ ls -al node_modules/npm/bin/
total 56
drwxr-xr-x 9 macbookpro staff 288B 24 Feb 09:03 ./
drwxr-xr-x 25 root wheel 800B 7 Aug 2019 ../
drwxr-xr-x 4 macbookpro staff 128B 24 Feb 09:03 node-gyp-bin/
-rwxr-xr-x 1 macbookpro staff 893B 24 Feb 09:03 npm*
-rwxr-xr-x 1 macbookpro staff 4.5K 24 Feb 09:03 npm-cli.js*
-rw-r--r-- 1 macbookpro staff 483B 24 Feb 09:03 npm.cmd
-rw-r--r-- 1 macbookpro staff 887B 24 Feb 09:03 npx
-rwxr-xr-x 1 macbookpro staff 177B 24 Feb 09:03 npx-cli.js*
-rw-r--r-- 1 macbookpro staff 539B 24 Feb 09:03 npx.cmd
macbookpro@MacBookPro:/usr/local/lib$

Während also Node selbst lief, war es NPM nicht, obwohl seine Datei vorhanden war.

In der Entwicklung verwende ich nodemonund npm run devin zwei Terminal-Tabs – beide liefen Sonntagnacht, bevor sie angehalten und dann der Mac in den Ruhezustand versetzt wurden.

Ich habe mich gefragt, ob eine Genehmigung geändert wurde.

Ich habe Homebrew ausprobiert, das Node, aber nicht NPM installiert hat, also musste ich das entfernen.

Ich habe den offiziellen Node-Installer für Mac ausprobiert, aber es ist eine alte Version, die Probleme verursacht hat, also musste ich sie entfernen.

Ich bin den nuklearen Weg gegangen und habe Knoten entfernt, wo immer er gefunden werden konnte:

brew uninstall node;
which node;
sudo rm -rf /usr/local/bin/node;
sudo rm -rf /usr/local/lib/node_modules/npm/
brew doctor;
brew cleanup --prune-prefix

Ich habe dann die offizielle Anweisung ausprobiert, Node über die Befehlszeile zu installieren:

curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg</a>.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"

… was fehlgeschlagen ist:

-bash: wget: command not found

… und als ich versuchte, wget zu installieren:

brew install wget

… Ich habe mehr Fehler:

Fehler: Der brew linkSchritt wurde nicht erfolgreich abgeschlossen. Die Formel wurde erstellt, ist aber nicht in /usr/local symbolisch verlinkt. Share/locale/cs/LC_MESSAGES/libidn2.mo konnte nicht symbolisiert werden. /usr/local/share/locale/cs/LC_MESSAGES ist nicht beschreibbar .

Sie können es erneut versuchen mit: brew link libidn2

… Und:

Fehler: Der brew linkSchritt wurde nicht erfolgreich abgeschlossen. Die Formel wurde erstellt, ist aber nicht in /usr/local symbolisch verlinkt. Share/locale/bg/LC_MESSAGES/wget.mo konnte nicht symbolisiert werden. /usr/local/share/locale/bg/LC_MESSAGES ist nicht beschreibbar .

Sie können es erneut versuchen mit: brew link wget

Ich hatte vor dem Wochenende ähnliche Probleme mit Homebrew, und ich denke, das ist eine Fortsetzung davon.

Wenn ich laufe brew doctorbekomme ich:

Unexpected header files:
  /usr/local/include/node/...

… und es gibt Hunderte von Dateien, die mit Node verbunden sind, obwohl es deinstalliert wurde.

Ich habe seitdem ein paar verschiedene Ansätze gefunden, um das mögliche Berechtigungsproblem zu beheben:

sudo chown -RWer bin ich:admin /usr/local/

… Und:

sudo chown -R $(whoami) $(brew --prefix)/*

… aber da ich keine Ahnung habe, was die möglichen Folgen eines solchen Betriebs wären, wäre ein Expertenrat sehr willkommen!

Um nuklear zu werden, ist ein gutes Backup erforderlich: Drehen Sie die Uhr von 5 nach 12 auf 100 Sekunden vor Mitternacht zurück , indem Sie Ihr Sonntagabend-Backup wiederherstellen. IMHO ist Ihr /usr/local/-Ordner FUBAR.
Hallo @klanomath, ich habe Time Machine am Sonntag ausgeführt – ich nehme an, es ist möglich, versteckte Ordner wiederherzustellen?
Überprüfen Sie zuerst die Antwort von MichelleM ...

Antworten (1)

Ich habe gerade diesen gleichen Fehler gelöst. Was bei mir funktioniert hat war:

brew install node
sudo chmod 776 /usr/local/lib
brew link --overwrite node
sudo chmod 755 /usr/local/lib

Als ich lief, npm -vbekam ich den gleichen Fehler:

internal/modules/cjs/loader.js:983
  throw err;

Um es zu lösen, lief ich brew reinstall nodeund alles läuft jetzt wie erwartet.

Hallo Michelle, danke für den Vorschlag! Die Sorge, die ich habe, ist, die Berechtigungen für diese Ordner zu ändern – irgendwelche Gedanken dazu?
Ich würde Ihre aktuellen Berechtigungen für den Ordner überprüfen, indem ich ihn ausführe, stat -f %A /usr/local/libund ihn dann nach dem Ausführen wieder darauf ändern, brew link --overwrite nodewie ich es in meiner Antwort getan habe :)
Als ich rannte, brew link --overwrite nodebekam ich: Linking /usr/local/Cellar/node/13.8.0... Error: Could not symlink include/node/common.gypi /usr/local/include/node is not writable.Muss ich dort auch die Berechtigungen ändern?
Ja, diesen Fehler hatte ich auch. Ich rannte rm '/usr/local/include/node/config.gypi'und folgte dann den Schritten in meiner Antwort.
Außerdem bin ich mir nicht sicher, welche Version des Knotens Sie ausführen, daher sollten Sie dies überprüfen, um sicherzustellen, dass Sie mit derselben Version wie zuvor arbeiten.
Ich habe diese Anweisungen befolgt, aber es hat nicht funktioniert:macbookpro@macbookpro:~$ node -v -bash: node: command not found macbookpro@macbookpro:~$ npm -v -bash: npm: command not found macbookpro@macbookpro:~$
Das bedeutet, dass der Knoten nicht installiert ist. Bist du gelaufen brew install node?
Ja, ich habe die Befehle gemäß der Antwort ausgeführt.
Was ist die Ausgabe, wenn Sie laufen brew install node?
Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/cask). No changes to formulae. Warning: node 13.8.0 is already installed, it's just not linked You can use brew link node`, um diese Version zu verlinken.`
Als nächstes rennst dusudo chmod 776 /usr/local/lib