2026 OpenClaw MCP Node-Laufzeit-Mismatches: Warum nvm im Terminal funktioniert, MCP-Unterprozesse auf einer gemieteten ProxyMac Mac mini aber mit ENOENT abstürzen
Teams, die OpenClaw mit eigenen MCP-Servern auf Mac-mini-M4-Mieten in Hongkong, Japan, Südkorea, Singapur und den USA betreiben, posten häufig Stderr mit /usr/bin/env: node: No such file or directory, während Node v22 in der Terminal.app einwandfrei läuft. Die Ursache ist nicht „OpenClaw kaputt“, sondern mehrere Node-Installationen, die sich gegenseitig überlagern—nur eine davon erben launchd-gestützte Gateways. Dieses Handbuch vermittelt (1), wie Upstream-Stacks zunehmend moderne Node-Semantik für MCP-Transporte voraussetzen, (2) eine Symptom-Hash-Tabelle von Errno-Zeichenketten zu Fixes, (3), warum nvm-Hooks unter LaunchAgents nie laufen, (4) eine Neun-Schritte-Audit-Leiter mit Verweisen auf PATH & Homebrew, Umgebungsvariablen und Upgrade-Rollback, sowie (5) Corepack-Kantenfälle, wenn MCP-Shells pnpm dlx aufrufen. Zahlenanker: Node 22-Feature-Grenzen, 120-Sekunden-Neustart-Stürme und null Toleranz für implizite Dotfile-Abhängigkeit in regulierten Flotten.
Die Laufzeit-Spaltung: interaktive Shells gegen LaunchAgent-Welten
Interaktive-zsh-Sitzungen sourcen gern nvm.sh, stellen Homebrew-Pfade für Apple Silicon voran und zeigen Corepack-Shims. launchd startet OpenClaw mit dünnem Environment—oft nur /usr/bin:/bin:/usr/sbin:/sbin—sofern die plist keine Ergänzungen auflistet. MCP-Server erben, was das Gateway erbt; daher scheitern Shebangs #!/usr/bin/env node, wenn env node auf diesem PATH-Segment nicht findet.
- Beobachtbare Metrik: Erfassen Sie
node -p process.execPathaus Terminal und aus einem kleinen LaunchAgent-Echo-Job—Abweichungen über eine Pfadkomponente hinaus erfordern sofort plist-Anpassungen. - ABI-Fehler: Das Mischen von arm64-Binaries mit Rosetta-Shells zeigt sich als kryptische V8-Abstürze statt sauberem ENOENT—immer noch Laufzeit-Mismatch.
- Parallele Installationen: Homebrew
/opt/homebrew/bin/node, manuell geladenes pkg und nvm-verwaltete Builds können koexistieren; CI-spiegeltes JSON, das nur eines referenziert, bricht woanders.
/etc/proxymac-node.channel (Semver + Prüfsumme) versehen—Betrieb löst mehrdeutige Tickets damit 35 % schneller.
Symptom-Hash-Tabelle: Errno-Zeichenketten für MCP-Betreiber
| Log-Fingerabdruck | Wahrscheinliche Ursache | Erster Korrekturschritt |
|---|---|---|
env: node: No such file | PATH ohne brew-/nvm-Präfix | Absoluten PATH-Block ergänzen oder Symlink unter /usr/local/bin |
Error: Cannot find module 'node:fs' | Sehr altes Node parsiert moderne Import-Maps | Auf ≥22-LTS-Kanal gemäß Plattformhinweis aktualisieren |
MODULE_NOT_FOUND im MCP-Worker | NODE_PATH fehlt für Daemon | Explizites workingDirectory oder gebündelte Abhängigkeiten nutzen |
spawn EBADF nach Upgrade | Gemischte Teilinstallationen | Rollback über Rollback-Playbook |
Warum nvm.sh sourcen der falsche Produktionsvertrag ist
nvm verzögert Node-Downloads hinter Shell-Funktionen—ideal für Menschen, fragil für Mitternachtsautomatisierung. Stattdessen einen fest verdrahteten Interpreter-Pfad direkt im MCP-JSON referenzieren oder mit /bin/bash -lc wrappen, erst nach Threat Modeling zu Injektionsrisiken. Mit Secrets-Hygiene aus Schlüsselbund-Leitfaden kombinieren, damit Wrapper keine Tokens über set -x leaken.
Neun-Schritte-Laufzeit-Audit-Leiter
- Bereitstellungen einfrieren: CI-Merges bis zum Abschluss der Diagnose pausieren—
launchctl kickstartnicht endlos triggern. - Effektives PATH ausgeben: LaunchAgent temporär instrumentieren, sortierte Umgebung zu loggen (geschützte Datei).
- Node-Builds vergleichen:
node -p "[process.version, process.arch]"in beiden Kontexten ausführen. - MCP-JSON normalisieren: Relative Interpreter-Hinweise durch absolute Exec-Pfade ersetzen.
- Corepack ausrichten: Einmal global mit festgepinnten Paketmanagern aktivieren—Versionen dokumentieren.
- OpenClaw-Upgrades querdurch: Upgrade-Matrix befolgen.
- JSONL tailen: stderr-Zeilen mit Logging-Leitfaden korrelieren.
- ulimit prüfen: Große Monorepos erschöpfen mitunter FDs—siehe ulimits.
- RCA veröffentlichen: Betroffene Regionen (HK / JP / KR / SG / US) und Semver-Endpunkte festhalten.
.zshrc in plist-ProgramArguments zu stopfen—Reviewer können Sicherheits-Regressionen dann kaum sinnvoll diffen.
Corepack, pnpm und MCP-Einstiegspunkte, die Paketmanager spawnen
Wenn MCP-Definitionen pnpm dlx oder yarn node aufrufen, muss Corepack konsistent aktiv sein—interaktive Shells beenden Setup-Prompts, die launchd nie sieht. Nicht-interaktive Flags einbauen und Caches unter diensteigenen Verzeichnissen spiegeln, damit sich HK- und US-Replikas gleich verhalten.
FAQ
Beseitigt Docker diesen Schmerz? Container pinnen OS-Images, aber Sie müssen weiterhin ein Node-Basis-Tag wählen—dieselbe Semver-Disziplin.
Spielt Apple Silicon eine Rolle? Ja—Fat-Binaries von Intel-Laptops treffen arm64-Minis falsch.
Wo passen SSH-Sitzungen hin? Manuelles SSH erbt Login-Shells; Gateway-Prozesse nicht—SSH-Tests als Hinweise behandeln, nicht als Vertrag.
Warum ProxyMac Mac mini zu diszipliniertem Node-Pinning passt
Gemietete Mac-mini-M4-Hosts in HK / JP / KR / SG / US geben Teams deterministische Apple-Silicon-Umgebungen ohne Beschaffungsverzögerung—ideal, wenn MCP-Gateways den Node-Upstream monatlich mitgehen müssen. Hardware-Miete über die Preisseite mit Betriebsdokumentation im Hilfecenter kombinieren; VNC nutzen, wenn GUI-Installer Gatekeeper-Dialoge interaktiv durchklicken müssen.
MCP mit einem fest verdrahteten Node-Binary ausliefern
OpenClaw · MCP · HK / JP / KR / SG / US