Ako opraviť chybu Uncaught ReferenceError: process is not defined vo Vite

Najdôležitejšia oprava je jednoduchá: ak chyba pochádza z vášho kódu Vite na strane prehliadača, nahraďte process.env rozhraním API import.meta.env od Vite. Objekt process patrí do Node.js, zatiaľ čo bežná klientská aplikácia Vite beží v prehliadači. Vite zámerne sprístupňuje premenné prostredia bezpečné pre klienta prostredníctvom import.meta.env.

Napríklad kód migrovaný z iného nástrojového reťazca môže obsahovať process.env.REACT_APP_API_URL. Vo Vite je typickou náhradou import.meta.env.VITE_API_URL, pričom VITE_API_URL je definovaná v súbore .env. Ak chyba pochádza z balíka tretej strany, a nie z vášho vlastného zdroja, najlepšou opravou môže byť aktualizácia, nahradenie alebo konfigurácia tohto balíka namiesto pridávania všeobecného polyfillu pre Node.js.

Tieto pokyny vychádzajú z aktuálnej dokumentácie Vite dostupnej k 11. septembru 2026. Autoritatívnymi referenciami sú dokumentácia Premenné prostredia a režimy od Vite, dokumentácia Zdieľané možnosti a sprievodca SSR. Rozdiel medzi kódom prehliadača a runtime API Node.js nájdete v oficiálnej dokumentácii procesu Node.js.

Prečo Vite hlási chybu „process is not defined“?

Prehliadač nemá vstavaný globálny objekt process z Node.js. Dokumentácia Node.js opisuje process ako objekt, ktorý poskytuje informácie o aktuálnom procese Node.js a kontrolu nad ním. Ak sa kód očakávajúci tento objekt Node dostane do zväzku pre prehliadač, odkaz ako process.env.API_URL môže zlyhať za behu s chybou ReferenceError: process is not defined.

Klientsky model Vite je odlišný. Jeho oficiálne rozhranie prostredia sprístupňuje hodnoty pod import.meta.env. Vite tiež poskytuje vstavané hodnoty, ako sú import.meta.env.MODE, import.meta.env.DEV, import.meta.env.PROD, import.meta.env.BASE_URL a import.meta.env.SSR.

Ilustrácia generovaná AI zobrazujúca konzolu prehliadača s chybou Uncaught ReferenceError process is not defined v aplikácii Vite
Ilustrácia generovaná AI: typický symptóm v konzole prehliadača, keď klientsky kód odkazuje na globálny objekt process z Node.js.

Ktorá oprava sa vzťahuje na váš projekt?

Čo nájdeteNajlepšia prvá oprava
Váš vlastný klientsky kód v React, Vue, Svelte alebo vanilla JS používa process.envNahraďte ho pomocou import.meta.env a použite premennú s predponou VITE_.
Migrovali ste z Create React App a stále používate REACT_APP_*Premenujte klientske premenné na VITE_* a aktualizujte každý odkaz.
Používate iba process.env.NODE_ENV na rozlíšenie vývojového a produkčného prostrediaV kóde prehliadača uprednostnite import.meta.env.DEV, import.meta.env.PROD alebo import.meta.env.MODE.
Stack trace ukazuje do node_modulesSkontrolujte, či má závislosť prehliadačovo kompatibilné vydanie alebo zostavenie, skôr než pridáte kompatibilné shims.
Odkaz je v vite.config.ts alebo inom nástroji na strane Nodeprocess.env môže byť tam platný; použite pomocníka loadEnv od Vite, keď potrebujete hodnoty zo súborov .env* počas vyhodnocovania konfigurácie.
Kód je server-only kód SSRGlobálne objekty Node môžu byť na serveri vhodné, ale zdieľané moduly nesmú vykonávať kód určený iba pre Node v prehliadači.

1. Nahraďte process.env v kóde prehliadača

Začnite vyhľadaním process.env a holých odkazov na process vo vašom zdrojovom adresári. Ak je odkaz v kóde, ktorý je dodávaný do prehliadača, preveďte ho na rozhranie prostredia Vite.

Pred:

const apiUrl = process.env.REACT_APP_API_URL

if (process.env.NODE_ENV === 'development') {
  console.log('Development mode')
}

Po:

const apiUrl = import.meta.env.VITE_API_URL

if (import.meta.env.DEV) {
  console.log('Development mode')
}

Ak potrebujete presný názov režimu namiesto booleovskej hodnoty vývoj/produkcia, použite import.meta.env.MODE. Vite dokumentuje režimy a NODE_ENV ako súvisiace, ale oddelené koncepty, takže nepredpokladajte, že vlastný režim ako staging je ekvivalentom zmeny NODE_ENV.

Ilustrácia generovaná AI ukazujúca nahradenie process.env pomocou import.meta.env.VITE_API_URL v zdrojovom kóde Vite
Ilustrácia generovaná AI: odporúčaná zmena na strane klienta je čítať premenné Vite prostredníctvom import.meta.env.

2. Premenujte klientske premenné prostredia s predponou VITE_

V predvolenom nastavení Vite sprístupňuje zdrojovému kódu klienta iba premenné prostredia, ktorých názvy začínajú na VITE_. Toto je bezpečnostná hranica určená na zníženie náhodného odhalenia serverových tajomstiev.

Súbor .env na úrovni projektu môže obsahovať:

VITE_API_URL=https://api.example.com
VITE_APP_NAME=Example App
DB_PASSWORD=do-not-expose-this

Klientský kód môže čítať import.meta.env.VITE_API_URL a import.meta.env.VITE_APP_NAME. Nepredponená premenná DB_PASSWORD nie je v predvolenom nastavení sprístupnená prostredníctvom import.meta.env.

Nepovažujte predponu VITE_ za úložisko tajomstiev. Vite výslovne varuje, že predponované hodnoty sú zabalené do klientskeho kódu. Všetko, čo je dodané do prehliadača, by sa malo považovať za čitateľné používateľom. Tajné kľúče API, súkromné podpisové kľúče, heslá databáz a podobné poverenia patria na server, nie do klientskeho zväzku Vite.

Vite načítava .env a .env.local, ako aj súbory špecifické pre režim, ako sú .env.production alebo .env.staging. Hodnoty špecifické pre režim majú prednosť pred všeobecnými súbormi, zatiaľ čo premenné už prítomné v prostredí pri štarte Vite majú vyššiu prioritu ako hodnoty zo súborov.

Ilustrácia generovaná AI zobrazujúca súbor .env Vite s premennými VITE_API_URL a ďalšími premennými s predponou VITE
Ilustrácia generovaná AI: premenné viditeľné pre klienta používajú predponu VITE_; citlivé tajomstvá by mali zostať na strane servera.

3. Reštartujte Vite po zmene súborov .env

Vite načítava súbory prostredia pri štarte. Po pridaní, premenovaní alebo úprave hodnoty v súbore .env* zastavte vývojový server a znova ho spustite. Samotné obnovenie prehliadača môže spôsobiť, že budete testovať hodnoty načítané pred zmenou.

# stop the current dev server, then start it again
npm run dev

Tiež sa uistite, že súbor prostredia je v adresári, ktorý je Vite nakonfigurovaný používať. Predvolený envDir je koreňový adresár projektu. Ak má váš projekt vlastný root alebo envDir, správne pomenovaná premenná v nesprávnom adresári sa môže stále javiť ako undefined.

4. Overte výsledok pred zmenou čohokoľvek iného

Znovu načítajte aplikáciu a skontrolujte konzolu prehliadača. Pôvodná výnimka process is not defined by mala byť preč. Potom overte konkrétne správanie, ktoré závisí od premennej – napríklad požiadavka na API by mala smerovať na očakávanú základnú URL.

Pre dočasnú diagnostiku je rozumné zaznamenať netajnú hodnotu, ako je základná URL API alebo režim. Následne odstráňte nepotrebné logovanie, najmä ak by mohlo odhaliť detaily vnútornej konfigurácie.

Ilustrácia generovaná AI zobrazujúca konzolu prehliadača aplikácie Vite s URL API a bez chyby process is not defined
Ilustrácia generovaná AI: overte, či je konzola prehliadača čistá a či je zamýšľaná netajná konfiguračná hodnota dostupná.

Čo ak chyba pochádza zo závislosti?

Ak vaše vyhľadávanie nenájde žiadny odkaz na process vo vašom zdroji, preskúmajte stack trace. Cesta vnútri node_modules často znamená, že balík bol napísaný s predpokladmi Node.js alebo bola pre použitie v prehliadači vybraná nesprávna položka balíka.

Najbezpečnejší postup je aktualizovať závislosť, skontrolovať jej oficiálnu dokumentáciu pre podporu prehliadača a uprednostniť prehliadačovo kompatibilný balík alebo export. Všeobecný polyfill môže chybu odstrániť, no zanechať iné API určené iba pre Node neriešené, takže to nie je automaticky kompletná oprava.

Ak závislosť potrebuje iba jednu konštantu v čase kompilácie, možnosť define od Vite môže vykonať cielenú globálnu náhradu. Napríklad úzko zameraná kompatibilná požiadavka môže byť vybavená definovaním presného identifikátora, ktorý závislosť číta, namiesto vytvárania celého objektu process:

import { defineConfig } from 'vite'

export default defineConfig({
  define: {
    'process.env.LEGACY_FLAG': JSON.stringify('enabled')
  }
})

Použite to iba vtedy, keď rozumiete tomu, čo závislosť očakáva. Vite dokumentuje define ako náhradu globálnej konštanty, ktorá je dostupná počas vývoja a staticky nahradená počas zostavovania. Nepoužívajte to na vtláčanie tajomstiev do kódu prehliadača.

Kedy je process.env platný v projekte Vite?

Môže byť platný v kóde na strane Node. Bežným príkladom je vite.config.ts. Aktuálna dokumentácia konfigurácie Vite však robí dôležitý rozdiel: súbory .env* nie sú automaticky injektované do process.env počas počiatočného vyhodnocovania konfiguračného súboru. Ak tieto súbory potrebujete v konfigurácii, použite pomocníka loadEnv od Vite.

import { defineConfig, loadEnv } from 'vite'

export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd(), '')

  return {
    define: {
      __APP_API_URL__: JSON.stringify(env.APP_API_URL)
    }
  }
})

Prázdna predpona odovzdaná do loadEnv znamená, že konfigurácia môže čítať všetky zodpovedajúce hodnoty. To ich automaticky neexponuje do prehliadača, ale akákoľvek hodnota, ktorú zámerne umiestnite do define, sa môže stať súčasťou klientskeho kódu. Exponujte iba to, čo je bezpečné.

Čo sa mení pri SSR?

Vite rozlišuje klientske a serverové prostredia. V typickom nastavení SSR môže serverový kód bežať v Node.js, zatiaľ čo klientsky zväzok beží v prehliadači. To znamená, že odkaz na process.env môže byť úplne platný v module určenom iba pre server a neplatný v zdieľanom module, ktorý sa vykonáva aj na klientovi.

Ak sa chyba objaví až po hydratácii alebo navigácii v prehliadači, skontrolujte, či bol do klientskeho kódu importovaný nástroj orientovaný na server. Tam, kde je to vhodné, použite import.meta.env.SSR na rozlíšenie kontextov vykonávania, ale zároveň udržujte tajomstvá a API určené iba pre Node mimo vetiev a modulov dostupných pre klienta.

Bežné opravy, ktoré vytvárajú nové problémy

  • Pridanie window.process = {}: toto potláča iba niektoré vyhľadávania a môže skryť skutočný problém s kompatibilitou.
  • Nastavenie envPrefix na prázdny reťazec: Vite to výslovne odmieta, pretože by to mohlo exponovať každú premennú prostredia do klientskeho kódu.
  • Premenovanie tajomstva tak, aby začínalo na VITE_: to robí tajomstvo vhodným na exponovanie klientovi; presuňte prácu závislú od tajomstva na backend.
  • Zmena iba súboru .env: musíte tiež aktualizovať odkazy v kóde z process.env.NAME na import.meta.env.VITE_NAME a reštartovať Vite.
  • Polyfillovanie každého globálneho objektu Node: to môže pridať váhu zväzku a stále zlyhať, ak závislosť spoľahlí na nepodporovaných moduloch Node alebo správaní za behu.

Rýchly príklad migrácie

Predpokladajme, že projekt React mal predtým tento súbor:

REACT_APP_API_URL=https://api.example.com

a túto komponentu:

const endpoint = process.env.REACT_APP_API_URL
fetch(`${endpoint}/users`)

Vo Vite premenujte premennú:

VITE_API_URL=https://api.example.com

Potom zmeňte komponentu:

const endpoint = import.meta.env.VITE_API_URL
fetch(`${endpoint}/users`)

Reštartujte vývojový server a znova otestujte. Toto je správne riešenie, keď je hodnota bezpečná na exponovanie klientovi. Ak stará premenná obsahuje súkromné poverenie, nemigrujte ju týmto spôsobom; presuňte privilegovanú operáciu za serverový endpoint.

Finálna kontrola: ako viete, že oprava je kompletná?

Kompletná oprava má viac než jeden znak. Prehliadač už nehlási process is not defined; vaše očakávané premenné bezpečné pre klienta sa vyhodnocujú na zamýšľané hodnoty; vývojové a produkčné režimy sa správajú podľa očakávania; a produkčné zostavenie funguje bez zavedenia nových chýb globálneho objektu Node.

Spustite svoj bežný vývojový test, potom vytvorte produkčné zostavenie pomocou skriptu na zostavenie vášho projektu a náhľadovo ho nasadte alebo nasadte do prostredia, ktoré pripomína produkciu. Ak sa zlyhanie objaví iba v produkcii, preskúmajte súbory .env špecifické pre režim a cesty kódu závislostí. Ak sa objaví iba v jednej závislosti, zamerajte sa na túto závislosť namiesto pridávania čoraz širších shimov do celej aplikácie.

Pre väčšinu aplikácií Vite je trvalé pravidlo priamočiare: používajte import.meta.env pre klientsku konfiguráciu, udržujte tajomstvá na serveri a vyhradzujte globálne objekty Node, ako je process, pre kód, ktorý skutočne beží v prostredí Node.

Zanechať komentár

Ako opraviť chybu „CSS štýly Tailwind sa neaktualizujú“ v aplikácii Vite React

Ako opraviť chybu „CSS štýly Tailwind sa neaktualizujú“ v aplikácii Vite React

Opravte neaktualizované štýly CSS v Tailwind vo Vite React kontrolou nastavenia Tailwind v4, importu CSS, detekcie zdrojov, dynamických tried, HMR a zastaraných vyrovnávacích pamätí.

Ako opraviť ModuleNotFoundError: V Pythone 3 neexistuje modul s názvom „pip“

Ako opraviť ModuleNotFoundError: V Pythone 3 neexistuje modul s názvom „pip“

Oprava chyby ModuleNotFoundError v jazyku Python 3 pre príkaz pip v systémoch Windows, macOS a Linux pomocou nástroja ensurepip, balíkov operačného systému, virtuálnych prostredí a kontrol interpretov.

Ako opraviť chybu „Oprávnenie zamietnuté (verejný kľúč)“ v GitHub SSH

Ako opraviť chybu „Oprávnenie zamietnuté (verejný kľúč)“ v GitHub SSH

Opravte chybu „Oprávnenie GitHub SSH zamietnuté (verejný kľúč)“ kontrolou hostiteľa, aktívneho kľúča SSH, účtu GitHub, autorizácie SSO, vzdialenej adresy URL a prístupu na port 22.

Ako opraviť chybu „Git Push Rejected: Non-FastForward“ bez straty zmien

Ako opraviť chybu „Git Push Rejected: Non-FastForward“ bez straty zmien

Bezpečne opravte nerýchle pretáčanie zmien v Gite. Chráňte lokálnu prácu, načítajte vzdialené commity, vyberte zlúčenie alebo rebase, vyriešte konflikty a odošlite zmeny bez straty.

Ako opraviť chybu „Nginx 502 Bad Gateway“ pri proxyovaní do Node.js

Ako opraviť chybu „Nginx 502 Bad Gateway“ pri proxyovaní do Node.js

Opravte chyby Nginx 502 Bad Gateway s Node.js upstream kontrolou portu aplikácie, protokolov NGINX, adresy proxy_pass, siete kontajnerov, časových limitov a opätovného načítania.

Ako opraviť chybu „Typ 'null' nie je priraditeľný k typu“ v TypeScripte

Ako opraviť chybu „Typ 'null' nie je priraditeľný k typu“ v TypeScripte

Oprava chyby „Typ 'null' nie je možné priradiť k typu“ v jazyku TypeScript pomocou typov zjednotenia, zúženia, predvolených hodnôt a bezpečných tvrdení v rámci strictNullChecks.

Ako opraviť chybu „Prisma Client has not been generated yet“

Ako opraviť chybu „Prisma Client has not been generated yet“

Opravte chybu nevygenerovaného Prisma Client kontrolou generátora, schémy, výstupnej cesty, importov, verzií, nastavenia monorepa a krokov zostavenia pri nasadení.

Ako opraviť chybu „ERR_MODULE_NOT_FOUND“ v importoch Node.js ESM

Ako opraviť chybu „ERR_MODULE_NOT_FOUND“ v importoch Node.js ESM

Opravte chybu Node.js ERR_MODULE_NOT_FOUND v ESM kontrolou ciest importu, prípon súborov, inštalácie balíkov, exportov, režimu ESM a čistých inštalácií.

Ako vyriešiť problém so SSL certifikátom: Unable to get local issuer certificate v Git

Ako vyriešiť problém so SSL certifikátom: Unable to get local issuer certificate v Git

Vyriešte chybu Git 'unable to get local issuer certificate' identifikáciou dôveryhodného backendu, inštaláciou správneho reťazca CA a ponechaním zapnutej SSL verifikácie.

Ako opraviť chybu časového limitu siete MongoDB v pripojení Mongoose

Ako opraviť chybu časového limitu siete MongoDB v pripojení Mongoose

Opravte chyby časového limitu siete MongoDB v Mongoose identifikáciou typu časového limitu, testovaním dosiahnuteľnosti Atlasu alebo TCP, opravou URI a ladením časových limitov len v odôvodnených prípadoch.