JeecgBoot Uniapp项目中OAuth2认证后app.config.js引入路径问题解析

JeecgBoot Uniapp项目中OAuth2认证后app.config.js引入路径问题解析

【免费下载链接】jeecg-uniapp JEECG BOOT APP 移动解决方案,采用uniapp框架,一份代码多终端适配,同时支持APP、小程序、H5!实现了与JeecgBoot平台完美对接的移动解决方案!目前已经实现登录、用户信息、通讯录、公告、移动首页、九宫格等基础功能。 【免费下载链接】jeecg-uniapp 项目地址: https://gitcode.com/gh_mirrors/je/jeecg-uniapp

问题背景

在JeecgBoot Uniapp项目的H5打包部署过程中,开发人员发现了一个与OAuth2认证相关的配置加载问题。具体表现为:在开发环境下运行正常的app.config.js文件引入逻辑,在打包部署后出现了路径解析错误,导致配置文件无法正确加载。

问题现象

项目在开发环境下运行一切正常,但当打包部署到生产环境后,系统在进行OAuth2认证后,app.config.js文件的引入路径被错误地解析为/oauth2-app/app.config.js,而非预期的正确路径。这直接导致了前端配置无法加载,影响应用正常运行。

技术分析

这个问题本质上是一个路径解析问题,主要涉及以下几个方面:

  1. Vite构建工具的公共基础路径配置:在Vite项目中,公共基础路径(public base path)决定了静态资源的加载路径。

  2. 环境变量处理:项目使用了环境变量VITE_APP_PUBLIC_BASE来配置公共基础路径,但在路径拼接时没有正确处理路径分隔符。

  3. HTML模板注入:app.config.js是通过脚本标签动态注入到HTML中的,路径拼接逻辑需要特别处理。

解决方案

项目维护者通过修改vite.config.ts文件中的相关配置解决了这个问题。具体修改内容包括:

  1. 设置默认基础路径为/
  2. 检查并处理环境变量VITE_APP_PUBLIC_BASE的配置
  3. 确保路径末尾不包含多余的斜杠
  4. 正确拼接最终的脚本标签路径

关键代码修改如下:

let prefix = '/'
if (env.VITE_APP_PUBLIC_BASE) {
  prefix = env.VITE_APP_PUBLIC_BASE
}
if (prefix.endsWith('/')) {
  prefix = prefix.slice(0, -1)
}
const scriptTag = `<script src="${prefix}/app.config.js"></script>`

技术要点

  1. 路径规范化处理:在Web开发中,路径处理需要特别注意开头和结尾的斜杠,不一致的路径格式可能导致资源加载失败。

  2. 环境变量使用:合理使用环境变量可以实现开发环境和生产环境的差异化配置,但需要确保变量值的正确解析。

  3. 构建工具配置:Vite等现代构建工具提供了灵活的配置选项,开发人员需要充分理解这些配置项的含义和使用场景。

最佳实践建议

  1. 在涉及路径拼接的场景中,始终对路径进行规范化处理
  2. 为重要的环境变量设置合理的默认值
  3. 在开发环境和生产环境进行充分的路径相关测试
  4. 考虑使用专门的路径处理工具库来避免常见的路径问题

总结

这个问题的解决展示了JeecgBoot Uniapp项目团队对细节的关注和快速响应能力。通过合理的路径处理和配置调整,确保了应用在各种环境下的稳定运行。对于开发者而言,这也提醒我们在处理资源路径时需要格外谨慎,特别是在涉及认证跳转等复杂场景时。

【免费下载链接】jeecg-uniapp JEECG BOOT APP 移动解决方案,采用uniapp框架,一份代码多终端适配,同时支持APP、小程序、H5!实现了与JeecgBoot平台完美对接的移动解决方案!目前已经实现登录、用户信息、通讯录、公告、移动首页、九宫格等基础功能。 【免费下载链接】jeecg-uniapp 项目地址: https://gitcode.com/gh_mirrors/je/jeecg-uniapp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值