Wenn Sie mit Next.js unter Windows arbeiten und Ihr Repository in OneDrive haben, werden Sie früher oder später auf diesen Klassiker stoßen: EINVAL: invalid argument, readlink, wenn Sie versuchen, npm run dev zu starten.
Mir ist das passiert, und ich habe es mit einem sehr einfachen Ansatz gelöst: die wahre Ursache identifizieren (Locks + seltsame Links/Symlinks in .next), sicher reinigen und dann vorbeugen, um keine Zeit mehr zu verschwenden.
## Was eigentlich passiert
Wenn OneDrive einen Projektordner synchronisiert, kann es:
-
- Dateien während der Next-Kompilierung sperren (Locks)
-
- Datei-/Ordner-Metadaten „berühren“
-
- und in einigen Fällen inkonsistente Artefakte innerhalb von
.nexthinterlassen (ein volatiles Verzeichnis mit hoher Fluktuation).
- und in einigen Fällen inkonsistente Artefakte innerhalb von
Ergebnis: Next versucht, ein readlink (Lesen eines symbolischen Links/Junctions) auszuführen, und Windows gibt EINVAL zurück.
## Meine Überprüfung des Plans (was richtig ist und was ich hinzufügen würde)
Ihr Basisplan ist korrekt und minimalistisch:
- Node-Prozesse beenden, um Locks freizugeben.
.nextlöschen (korrupte Artefakte).tsconfig.tsbuildinfolöschen, um eine saubere Rekompilierung zu erzwingen.- Verifizieren, dass der Dev-Server den Status „Ready“ erreicht und Routen kompiliert.
Was ich hinzufüge, um es „zukunftssicher“ zu machen:
-
- Verhindern, dass OneDrive
.nextsynchronisiert (ideal) oder das Repo direkt aus OneDrive verschieben.
- Verhindern, dass OneDrive
-
- Wenn Sie OneDrive aufgrund von Unternehmensrichtlinien benötigen: Zumindest den Projektordner ausschließen oder einen nicht synchronisierten lokalen Speicherort verwenden und nur Dokumente/Exporte synchronisieren.
-
- Wenn das Team groß ist: Hinterlegen Sie ein Runbook (Schritte + Befehle + Erfolgskriterien), damit jeder es ausführen kann.
## Genaue Schritte, die ich zur Fehlerbehebung verwende
Ziel: Rückkehr zu einem deterministischen Zustand vor dem Ausführen von
dev.
### 1) Prozesse beenden, die Dateien blockieren
Unter Windows ist es am praktischsten, Terminal-Fenster zu schließen und aktive node.exe-Prozesse zu beenden.
### 2) Sicheres Reinigen von Artefakten
Ich lösche:
-
.next/
-
tsconfig.tsbuildinfo(falls vorhanden)
### 3) dev starten und „Ready“ bestätigen
Mein Erfolgskriterium ist nicht „es ist gestartet“, sondern das Log zu sehen mit:
-
✓ Starting...
-
✓ Ready in Xs
-
- und dass es beginnt, Routen zu kompilieren, ohne wieder in EINVAL zu verfallen.
## Verifizierungsnachweis (was ich erwarte zu sehen)
Ein typisches Beispiel für einen „gesunden Zustand“ sieht so aus:
```text
▲ Next.js 15.1.0
-
- Local: http://localhost:3000
✓ Starting...
✓ Ready in 7.4s
○ Compiling /src/middleware ... ✓ Compiled /src/middleware ... ○ Compiling /[locale]/contenidos ...
```
Damit ist der Fehler für mich behoben.
## Wie ich verhindere, dass es wieder passiert
Wenn Sie meine direkte Empfehlung ohne Umschweife wollen:
-
- Haben Sie das Repo nicht in OneDrive (beste Option).
-
- Wenn Sie es nicht vermeiden können:
-
- Schließen Sie .next von der Synchronisation aus (wenn Ihr OneDrive/IT dies zulässt)
-
- oder arbeiten Sie in einem nicht synchronisierten lokalen Ordner und pushen Sie Änderungen wie vorgesehen über Git.
.next ist kein „Quellcode“, es ist nützlicher Müll: Wenn OneDrive dazwischenfunkt, bricht es Ihren Entwicklungszyklus.
## Wenn Sie möchten, mache ich es mit Ihnen zusammen sicher
Wenn dieser Fehlertyp einmal auftritt, ist dies meist nur die Spitze des Eisbergs: lange Pfade, Watcher, Berechtigungen, korrupter Cache, CI anders als lokal usw.
Wenn Sie möchten, dass ich es stabil (lokal + CI) und mit einer reproduzierbaren Checkliste mache, fragen Sie mich nach einer Diagnose.









