十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vite 中使用 Excalidraw 报 ReferenceError: process is not defined 怎么解决?

Vite 中使用 Excalidraw 报 ReferenceError: process is not defined 怎么解决? Vite 中使用 Excalidraw 报 ReferenceError: process is not defined 怎么解决【免费下载链接】excalidrawVirtual whiteboard for sketching hand-drawn like diagrams项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw在 Vite 构建的项目里嵌入excalidraw/excalidraw组件时浏览器里会抛出ReferenceError: process is not defined。项目官方文档FAQ 与 Integration解释了这个报错的成因并给出了一步修复方法在 Vite 配置中用define声明process.env.IS_PREACT。这篇文章整理这条排查与修复路径。前提项目已按官方方式引入 Excalidraw按 Installation 文档先用 npm 或 yarn 安装包npm install react react-dom excalidraw/excalidraw # or yarn add react react-dom excalidraw/excalidraw再按 Integration 文档以 ES6 module 方式引入import { Excalidraw } from excalidraw/excalidraw;如果组件能正常安装引入、但页面运行时抛出ReferenceError: process is not defined就命中了本文的问题。报错原因Excalidraw 包内部会访问process.env.IS_PREACT以此决定是否使用preactbuild。Node 环境下process自然存在但浏览器里没有而 Vite 默认会移除环境变量构建产物中拿不到process于是读取该变量时就抛出ReferenceError: process is not defined。官方 FAQ 的原文说明是When usingviteor any build tools, you will have to make sure theprocessis accessible as we are accessingprocess.env.IS_PREACTto decide whether to usepreactbuild. Since Vite removes env variables by default...Integration 文档的 Preact 章节给出了同样的说明适用条件是使用 Vite 或任何构建工具。修复方法在 Vite 配置中声明process.env.IS_PREACT官方给出的修复方式是用 Vite 的define选项做静态替换。FAQ 中的原始片段define: { process.env.IS_PREACT: JSON.stringify(true), },把它加到你项目 Vite 配置文件vite.config.js/vite.config.ts中import { defineConfig } from vite; export default defineConfig({ define: { process.env.IS_PREACT: JSON.stringify(true), }, });其中define块与官方文档片段一致外层defineConfig只是把它放进配置文件上下文的写法。一个容易被忽略的细节取值必须是字符串true不能是布尔值。CHANGELOG 在 0.17.3 的 Fixes 中专门提示使用 Vite 时process.env.IS_PREACT要设置为truestring而不是 boolean所以片段里用JSON.stringify(true)而不是直接写true。这个配置项的含义Integration 文档的 Preact 章节解释了背景包的umdbuild 内联了react/jsx-runtime和react-dom/client与 Preact 冲突因此另发了一个 Preact 专用 build宿主设置process.env.IS_PREACT为true后才会走 Preact build。也就是说这个define决定了包在运行时选用哪份 buildFAQ 给出的代码片段就是针对本报错的官方修复。验证保存配置后重启 Vite dev server或重新执行生产构建再打开页面浏览器不再抛出ReferenceError: process is not definedExcalidraw /组件正常渲染即说明修复生效。该错误的根因是 Vite 构建产物中缺少process通过define补齐后这个现象随之消除。参考资料FAQReferenceError: process is not definedIntegration模块打包器与 Preact 集成Installation安装 excalidraw/excalidrawCHANGELOG0.17.3 关于字符串取值的提示【免费下载链接】excalidrawVirtual whiteboard for sketching hand-drawn like diagrams项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表