生产环境必须禁用 SourceMap,否则源码会随 .map 文件一起被下载,直接暴露业务逻辑和敏感路径;uni-app 项目中应在 vite.config.js 的 build.sourcemap 设为 false,并在 HBuilderX 发行设置中取消勾选“生成 sourceMap”,再验证 dist 目录无 .map 文件及 JS 中无 sourceMappingURL 注释。

生产环境必须禁用 SourceMap,否则源码会随 .map 文件一起被下载,直接暴露业务逻辑和敏感路径。
uni-app 项目中关闭 H5 端 SourceMap 的正确位置
uni-app 基于 Vite 构建,sourcemap 配置在 vite.config.js 的 build 选项里,不是 vue.config.js(那是 Vue CLI 项目)。
- 确认你用的是 HBuilderX 3.1+ 或 CLI 创建的 uni-app,默认是 Vite
- 打开项目根目录下的
vite.config.js(没有就新建) - 确保配置写在
build对象下,且只影响生产构建
正确写法:
export default defineConfig({
build: {
sourcemap: false // ✅ 关键:设为 false,彻底不生成 .map 文件
}
})为什么不能只靠 process.env.NODE_ENV === 'production' 判断
uni-app 编译时会注入多个环境变量(如 UNI_PLATFORM),NODE_ENV 可能始终为 development,尤其在 HBuilderX 中运行 发行 → 网站 时。
-
sourcemap: process.env.NODE_ENV === 'production' ? false : true在 H5 发行时大概率失效 - 直接写
sourcemap: false最稳妥,Vite 会在build阶段强制忽略该配置 - 若需开发时保留(比如调试 H5),可用
sourcemap: 'inline',但上线前必须改回false
检查是否真的生效了
光改配置不够,要验证产物中是否还存在 .map 文件或 sourceMappingURL 注释。
- 运行
npm run build:h5(或 HBuilderX 中「发行 → 网站」) - 检查
unpackage/dist/build/h5/目录下有没有.js.map或.css.map文件 - 打开任意生成的
.js文件末尾,确认没有//# sourceMappingURL=xxx.map这行 - 浏览器访问 H5 页面,打开 Network 面板过滤
map,应无任何.map请求
容易被忽略的坑:HBuilderX 图形界面会覆盖配置
HBuilderX 的「发行」菜单有独立的 SourceMap 开关,它会无视 vite.config.js 设置。
- 点击「发行 → 网站 → 发行设置」
- 取消勾选「生成 sourceMap」(这个选项默认是勾选的)
- 即使你在
vite.config.js里写了sourcemap: false,只要这里没关,依然会生成 - CLI 用户不受此影响,但混合使用 HBuilderX 和命令行时务必双重确认
真正安全的做法是:代码配置 + GUI 设置双关,再加一次产物检查。SourceMap 泄露不是“可能出问题”,而是“已经泄露”。


















