Uncaught ReferenceError: React is not defined
at M0 (index-C741WXwA.js:28:113749)
Ошибка возникает сразу при загрузке приложения в браузере.
Эта проблема сбивает с толку следующее:
- Я использую React 18 с автоматической средой выполнения JSX
- Я не использую React.createElement где-либо в своем исходном коде
- Все файлы JSX используют расширение .jsx
- .jsФайлы не содержат JSX (проверено)
- Ни один файл не использует React. напрямую (проверено)
- В файлах ствола index.js нет JSX (проверено)
- main.jsx явно импортирует React
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
})
main.jsx:
import React, { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
import './index.css'
createRoot(document.getElementById('root')).render(
)
Что может вызвать ошибку ReferenceError: React не определен в производственной сборке React 18 + Vite, если:
- Используется автоматическая среда выполнения JSX
- Нет устаревшего преобразования JSX
- Нет React.createElement вывод?
- React: 18.x
- Vite: 5.x
- @vitejs/plugin-react: последняя версия
- Инструмент сборки: Vite (ESM)
- Среда выполнения: Docker (этап сборки узла + Nginx)
# -------- BUILD STAGE --------
FROM node:22-alpine AS build
WORKDIR /app
# Bust cache with build arg - MANDATORY for fresh builds
ARG CACHEBUST=1
ENV CACHEBUST=$CACHEBUST
# Force no cache - print build info
RUN echo "Build ID: $CACHEBUST - $(date)"
# Copy package files
COPY package*.json ./
# FULL CACHE CLEAR - Remove everything and install fresh
RUN rm -rf node_modules && \
npm cache clean --force && \
npm ci --prefer-offline=false
# Copy source files
COPY . .
# FULL BUILD - Clear all caches and build fresh
RUN rm -rf node_modules/.vite dist .vite && \
npm run build && \
echo "Build complete - files:" && \
ls -la dist/assets/
# -------- RUN STAGE --------
FROM nginx:alpine
# Clear nginx cache
RUN rm -rf /var/cache/nginx/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
# Add cache-busting headers
RUN echo "Build completed at: $(date)" > /usr/share/nginx/html/build-info.txt
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Подробнее здесь: https://stackoverflow.com/questions/798 ... efined-but
Мобильная версия