首页 > 编程语言 >vite编译为什么会报错“__vite-browser-external:node:path、fs、url...”

vite编译为什么会报错“__vite-browser-external:node:path、fs、url...”

时间:2023-12-12 17:44:59浏览次数:32  
标签:__ 浏览器 报错 external 模块 vite browser

当你在使用 Vite 打包时,遇到类似于 `__vite-browser-external` 的错误消息,通常是因为在代码中尝试导入浏览器不支持的模块。

`__vite-browser-external` 是 Vite 内部的一个机制,用于替换浏览器环境中无法直接访问的 Node.js 核心模块。例如,浏览器不具备文件系统访问能力,因此 Node.js 的 `fs` 模块在浏览器中不可用。为了解决这个问题,Vite 使用 `__vite-browser-external` 提供了在浏览器环境下可以使用的替代方案。

当你使用 Vite 开发项目时,通常会遇到以下两种情况导致出现 `__vite-browser-external` 错误:

1. 使用了浏览器不支持的模块:如果你在代码中导入了需要 Node.js 环境支持的模块(如 `fs`、`path`、`child_process` 等),打包过程中就会触发 `__vite-browser-external` 错误。这时需要检查导入的模块,并考虑使用适合浏览器环境的替代方案。

2. 缺少必要的依赖项:某些模块可能需要特定的依赖项来运行,例如 `__vite-browser-external:url` 需要安装 `__vite-browser-external` 依赖包。如果依赖项缺失或版本不兼容,也会导致打包过程中出现 `__vite-browser-external` 错误。

为了解决这个问题,可以按照以下步骤进行调试:

1. 检查代码中的模块导入语句,确认是否导入了浏览器不支持的模块(一般是node模块)。
2. 模块改造例如:
`import { resolve } from "path"`修改为`const { resolve } = await import("path")`
`import { resolve } from "fs/promises"`修改为`const { resolve } = await import("fs/promises")`
3. 如果问题仍然存在,尝试删除 `node_modules` 目录并重·新安装依赖。

标签:__,浏览器,报错,external,模块,vite,browser
From: https://www.cnblogs.com/ziChin/p/17897421.html

相关文章

  • Object---clone方法
     概述java.lang.Object#clone Byconvention,thereturnedobjectshouldbeobtainedbycalling{@codesuper.clone}.Ifaclassandallofitssuperclasses(except{@codeObject})obeythisconvention,itwillbethecasethat{@codex.clone().getClass()=......
  • 第七天冲刺
    man-K【电子公文传输系统·团队项目】第五次作业冲刺总结第七天团队作业(五):冲刺总结成员完成工作情况成员主要任务工作量厉彦宏最后整合和综合测试4孔垂闽完成加解密功能4农启镰前端页面测试4王晨博前端页面测试4丁乙倍数据库加密5前端......
  • ferry前端项目部署
    ferry项目地址:https://gitee.com/yllan(ferry为后端代码,ferry_web为前端代码)直接copy前端代码文中ferry为后端代码,ferry_web为前端代码一.安装依赖我用npm安装会报错,具体原因没去分析,大概就是npm版本的问题,我的版本是[email protected];然后用cnpm安装,一次成功,版本为[email protected]二.部......
  • 《实例化需求》读后感
    该书拥有众多的例子和建议,其中的50多个案例分析验证了不同的团队和组织通过采用该方法取得了不同程度的成功。作者并没有掩饰在引进该方法时所面临的挑战,通过分析那些失败案例所具有的模式和范例,给出了一些避免失败的建议。作者不仅通过案例分析和举例辨识出团队在引进实例化需求......
  • 金盾杯 pwn awd
    金盾杯pwnawd难点就是利用链表控制节点,理清其中的关系分析程序在初始化程序时会申请一个0x10的chunk作为一个头,在add中会申请三个堆块,第一个堆块就是用于存放第二个堆块的id,size,address,第二个堆块就是用于存放输入内容,第三个堆块就是存放第一个堆块的地址,和下......
  • moment 获取本年/本季度/本月/本周/今天/上年/上季度/上月/上周/昨天 开始结束时间
    今天1conststartTime=moment(moment().startOf('day').valueOf()).format('YYYY/MM/DDHH:mm:ss');2constendTime=moment(moment().valueOf()).format('YYYY/MM/DDHH:mm:ss');昨天1conststartTime=moment(moment().add(-1,�......
  • jmeter函数${__time(,)} 时间戳与时间格式的相互转换
    时间格式转换成时间戳用jmeter的函数助手中的${__time()}函数,括号里输入输入时间格式,如:${__time(yyyyMMddHHmmss)}精确到秒,生成时间戳为20231212170247${__time(yyyy-MM-ddHH:mm:ss)} 精确到时分秒2023-12-1217:02:47${__time(yyyyMMddHHmmssSSS)} 精确到毫秒  ......
  • 12.12邻接表存储实现图的深度优先遍历(c++)
    今天学习了数据结构中的邻接表存储实现图的深度优先遍历,其中让我受益匪浅,以下是我的解题思路。编写程序,实现由邻接表存储实现无向图的深度优先搜索遍历的功能。顶点为字符型。输入格式:第一行输入顶点个数及边的个数,第二行依次输入各顶点,第三行开始依次输入边的两个顶点,用空格......
  • 进/线/协程--引自阿秀的学习笔记
    进程、线程与协程区别1、进程是资源分配的基本单位,运行一个可执行程序会创建一个或多个进程,进程就是运行起来的可执行程序2、线程是资源调度的基本单位,也是程序执行的基本单位,是轻量级的进程。每个进程中都有唯一的主线程,且只能有一个,主线程和进程是相互依存的关系,主线程结束进......
  • centos7搭建kubernetes-v1.25.1集群(Containerd作为运行时)
    集群配置节点名称内存硬盘处理器内核总数ipmaster6GB40GB6192.168.67.166node16GB40GB6192.168.67.167node26GB40GB6192.168.67.168一、所有节点更改镜像源curl-o/etc/yum.repos.d/CentOS-Base.repo二、所有节点安装docker,注意:K8s在1.24以上......