Рабочая сборка React 18 + Vite выдает ReferenceError: React не определен, но в сборке не существует React.createElementJavascript

Форум по Javascript
Ответить
Anonymous
 Рабочая сборка React 18 + Vite выдает ReferenceError: React не определен, но в сборке не существует React.createElement

Сообщение Anonymous »

Я развертываю приложение React 18, созданное с помощью Vite. Приложение отлично работает в разработке, но во время выполнения происходит сбой со следующей ошибкой:
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
Конфигурация Vite:
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)
Dockerfile:
# -------- 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»