«процесс» не определен в React с использованием Excalidraw

Я пытаюсь интегрировать компонент Excalidraw в свое приложение React. Однако, когда я пытаюсь его использовать, мое приложение вылетает со следующей ошибкой:

Uncaught ReferenceError: process is not defined
    at node_modules/@excalidraw/excalidraw/main.js (main.js:1:1)
    at __require (chunk-WXXH56N5.js?v=842e9aa2:12:50)
    at main.js:11:1

Эта ошибка возникает из-за того, что файл main.js Excalidraw использует процесс.env, который является глобальным объектом Node.js и недоступен в среде браузера. Вот соответствующий код из main.js:

if (process.env.IS_PREACT === "true") {
if (process.env.NODE_ENV === "production") {
module.exports = require("./dist/excalidraw-with-preact.production.min.js");
} else {
module.exports = require("./dist/excalidraw-with-preact.development.js");
}
} else if (process.env.NODE_ENV === "production") {
module.exports = require("./dist/excalidraw.production.min.js");
} else {
module.exports = require("./dist/excalidraw.development.js");
}

Я следил за официальной документацией Excalidraw, но не нашел никакой информации об этой ошибке.

Как мне решить эту проблему и успешно использовать Excalidraw в моем проекте React?

Дополнительные детали:

  • Я использую React (.tsx) с Vite.
  • Я запускаю приложение в режиме разработки на своем локальном компьютере.
  • Компонент «Мой блокнот»:
import { Excalidraw } from "@excalidraw/excalidraw";

export function Notebook() {
    return (
        <>
            <h1 style = {{ textAlign: "center" }}>Excalidraw Example</h1>
            <div style = {{ height: "500px" }}>
                <Excalidraw />
            </div>
        </>
    );
}

Дайте мне знать, если вам нужна дополнительная информация.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основываясь на этом обсуждении github, вы можете использовать следующее в vite.config.ts, чтобы избежать «Uncaught ReferenceError: процесс не определен»

import { defineConfig } from 'vite'

export default defineConfig({
  define: {
    'process.env': {}
  }
})

Другие вопросы по теме