"statSync" is not exported by "__vite-browser-external:node:fs"
今天准备像往常一样打包发版,结果突然看到打包报错了:
这啥啊?昨天还好好的,问一下ai,看ai怎么说
"statSync" is not exported by "__vite-browser-external:node:fs"
这个错误表明你正在尝试从 Vite 项目中同步访问文件系统(fs)模块的 statSync 方法,但是 Vite 无法从指定的外部库中导出这个方法。
解释:
Vite 是一个现代化的前端构建工具,它将依赖项外部化,并通过 Hash 模块 ID 来直接引用它们。__vite-browser-external:node:fs 表示 Vite 试图外部化 Node.js 的 fs 模块,但这通常不是一个好主意,因为 fs 模块是一个 Node.js 特有的模块,并不适用于浏览器环境。
解决方法:
如果你需要在浏览器端代码中使用文件操作,应当考虑使用浏览器兼容的解决方案,例如使用 fs 的浏览器模拟版本,或者是 Web API 如 File 和 Blob 对象。
如果你只是想读取文件的状态,可以考虑使用 fetch API 结合服务器端的中间件来实现。
如果你正在开发 Node.js 应用并在 Vite 中遇到这个问题,确保你没有尝试在客户端代码中引用 Node.js 内置模块。客户端代码应当只依赖于浏览器环境下的模块。
如果你需要在 Vite 项目中使用 Node.js 的 fs 模块,可以考虑在 Vite 配置文件中将该模块内置化,或者使用条件判断来区分客户端和服务端代码。
但是我十分确信自己没有在业务组件中使用node独有的api,那是什么问题呢?继续上网查
猛然惊醒,原来是项目由依赖自动导入功能,今天写组件的时候手一滑,写了个
console.log('res=>', resolveConfig)
这就导致自动引入了如下模块:
import { resolveConfig } from "unocss";
而这个模块用到了node独有的一些操作文件和路径的api,导致了打包报错,注释掉这两行,即可正常打包。