---
createdAt: 2026-01-11
updatedAt: 2026-01-11
title: "`vite-env-only` & Intlayer – falsch-positiver `node:fs`-Verweigerungsfehler"
description: Warum vite-env-only einen verweigerten `node:fs`-Import mit Intlayer + React-Router + Vite meldet und was zu tun ist.
keywords:
- intlayer
- vite
- react-router
- vite-env-only
- node:fs
- Import verweigert
- Alias
- Client-Bundle
slugs:
- frequent-questions
- vite-env-only-node-fs-false-positive
---
# vite-env-only verweigert `node:fs` mit Intlayer
Wenn du das **vite-env-only**-Plugin verwendet hast (wie in älteren Empfehlungen von React-Router v7 erwähnt) und Folgendes siehst:
```bash
Error: [vite-env-only] Import denied
* Denied by specifier pattern: /^node:/
* Importer: index.html
* Import: "node:fs"
```
…auch wenn sich **kein `node:fs` in deinem Client-Bundle** befindet, handelt es sich um ein **false positive**.
## Was verursacht es
`vite-env-only` führt eine Babel-basierte Prüfung **früh während der Vite-Graphauflösung** durch, _bevor_:
- aliasing (einschließlich Intlayer’s browser vs node mappings),
- Dead-Code-Elimination,
- SSR- vs. Client-Auflösung,
- virtuelle Module wie die von React-Router.
Intlayer-Pakete enthalten Code, der sowohl in Node als auch im Browser funktionieren kann. In einem _zwischenzeitlichen_ Stadium kann ein Node-Builtin wie `node:fs` im Graph erscheinen, **bevor** Vite es aus dem Client-Build entfernt. `vite-env-only` erkennt das und löst sofort einen Fehler aus, obwohl das finale Bundle es nicht enthält.
## React-Router und Server-Module
In der React-Router-Dokumentation zu den **Konventionen für Server-Module**
(https://reactrouter.com/api/framework-conventions/server-modules), das Team **empfiehlt ausdrücklich die Verwendung von `vite-env-only`**, um zu verhindern, dass serverseitige Importe in das Client-Bundle gelangen.
Diese Konventionen beruhen jedoch auf Vites Aliasing, conditional exports und tree-shaking, um serverseitigen Code zu entfernen. Während Aliasing und conditional exports bereits angewendet werden, sind einige Node-basierte Hilfsfunktionen zu diesem Zeitpunkt in Paketen wie `@intlayer/core` noch vorhanden (obwohl sie im Client niemals importiert werden). Da das tree-shaking noch nicht ausgeführt wurde, werden diese Funktionen weiterhin von Babel geparst, und `vite-env-only` erkennt deren `node:`-Importe und meldet einen False Positive — obwohl sie im finalen Client-Bundle korrekt entfernt werden.
## Wie man das behebt / umgeht
### Empfehlung: `vite-env-only` entfernen
Entfernen Sie einfach das Plugin. In vielen Fällen ist es nicht nötig — Vite unterscheidet bereits über seine eigene Auflösung zwischen Client- und Server-Imports.
Damit wird die fälschliche `node:fs`-Ablehnung behoben, ohne Änderungen an Intlayer.
### Stattdessen den finalen Build prüfen
Wenn Sie dennoch sicherstellen möchten, dass keine Node-Built-ins im Client landen, prüfen Sie dies **nach dem Build**, z. B.:
```bash
pnpm build
grep -R "node:" dist/
```
Wenn es keine Ergebnisse gibt, sind Ihre Client-Bundles sauber.
## Zusammenfassung
- `vite-env-only` kann bei `node:fs` einen Fehler melden, weil es zu früh prüft.
- Vite + Intlayer + die Server-Module-Konventionen von React-Router entfernen normalerweise Server-only-Referenzen korrekt.
- Das Entfernen des Plugins oder die Überprüfung der _finalen Ausgabe_ ist in der Regel die beste Lösung.