uniapp使用vue3打包H5,android或ios加载白屏

在使用uniapp结合Vue3创建项目并执行npm run build:h5后,通过Android或iOS的webview加载会遇到白屏问题。原因在于跨域限制,Android Studio日志显示CORS政策阻止了文件访问。解决方案是针对webview添加允许所有源的CORS设置,调整后应用能正常打开。经测试,Vue2的项目打包未出现此问题,推测可能由Vue3的打包配置变动引起。

前景介绍

        按照uniapp官方文档介绍,根据步骤创建了使用Vue3的项目;执行命令npm run build:h5,

本地安装了http-server,打包之后的dist文件夹,执行http-server后,可以访问;

       但是使用Android或者ios进行本地加载白屏;以Android为例子,将打包后的文件夹存放到asset文件夹下,使用webview的loadUrl加载;

 val webView = findViewById<WebView>(R.id.webview)
 val webSettings = webView.settings
 webSettings.javaScriptEnabled = true
 webSettings.allowFileAccess = true
 webSettings.allowContentAccess = true
 webSettings.domStorageEnabled = true
 // 加载本地 HTML 文件
 val htmlFile = "file:///android_asset/plugin_m1010_01/index.html#pages/index/index" 
// 确保 HTML 文件在 assets 文件夹中
 webView.loadUrl(htmlFile)

但是调试发现,白屏;查看android-studio发现了如下问题

uniapp  Access to script at 'file:///android_asset/assets/index-WZlAV6YJ.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol 。。。。。。

大致意思就是跨域了;按照网上的教程加了一行代码

webSettings.setAllowUniversalAccessFromFileURLs(true);

重新debug调试,可以正常打开了;

PS:亲测了一下,使用vue2的项目打包成h5,是没有这个问题的;应该是vue3的打包改动引起的;

<think>嗯,用户想知道怎么用uniappVue3打包成Web小程序然后挂到企业微信上。首先,我得理清楚整个流程,分步骤来。首先,uniapp支持Vue3,这点没问题。用户可能已经创建好了项目,但需要确认他们的项目结构是否正确,比如是否用了正确的Vue3模板。 然后,打包成Web应用,应该是生成H5页面吧?这时候需要配置publicPath,可能涉及企业微信的路径问题。企业微信的小程序其实是他们自己的机制,可能需要把H5部署到服务器,然后配置企业微信的应用信息,比如CorpID和AgentID这些。用户可能对如何配置这些参数太清楚,得详细说明。 接下来,企业微信的JS-SDK接入可能是个关键点。需要引入SDK,处理权限验证,调用相关API。用户可能会遇到权限错误,者配置对导致无法调用接口的情况,需要提醒他们检查安全域名和配置是否正确。 还有,企业微信里的路由问题,H5在小程序里可能需要使用企业微信的路由方式,比如wx.miniProgram.navigateTo,这部分需要用户在代码里做适配。用户可能知道这点,导致页面跳转有问题。 调试也是个重要环节,需要告诉用户如何使用企业微信的调试工具和浏览器开发者工具,然他们可能知道怎么测试和排查问题。 最后,部署和发布流程,用户可能需要指导如何打包H5,部署到服务器,然后在企业微信后台配置应用。可能还要提到版本更新和缓存处理,避免出现缓存导致的问题。 总的来说,需要分步骤解释,从项目配置到打包,再到企业微信的接入和调试,每个环节都可能有问题,得详细说明注意事项,确保用户能顺利操作。同时,要提醒用户检查依赖版本,尤其是uniappVue3的支持情况,避免版本兼容。</think>以下是将 UniApp + Vue3 项目打包成 Web 小程序并接入企业微信的完整步骤: ### 一、项目准备阶段 1. **确认项目结构** - 确保项目使用 Vue3 模板创建: ```bash vue create -p dcloudio/uni-preset-vue#vue3 my-project ``` - 检查 `manifest.json` 中 Vue 版本配置: ```json "vueVersion": "3" ``` 2. **安装企业微信 SDK** ```bash npm install weixin-qy-js-sdk --save ``` ### 二、H5 打包配置 1. **修改打包路径** ```javascript // vue.config.js module.exports = { publicPath: process.env.NODE_ENV === &#39;production&#39; ? &#39;https://your-domain.com/h5/&#39; : &#39;/&#39; } ``` 2. **执行生产构建** ```bash npm run build:h5 ``` - 生成文件位于 `/dist/build/h5` ### 三、企业微信配置 1. **后台设置** - 登录[企业微信管理后台](https://work.weixin.qq.com/) - 进入「应用管理」→ 创建/选择应用 - 配置可信域名: ``` https://your-domain.com ``` 2. **获取必要参数** - 记录以下信息备用: - CorpID:企业唯一标识 - AgentID:应用ID - Secret:应用密钥 ### 四、SDK 集成代码 ```vue <script setup> import { onMounted } from &#39;vue&#39; import wx from &#39;weixin-qy-js-sdk&#39; let wxConfig = { corpId: &#39;YOUR_CORPID&#39;, agentId: &#39;YOUR_AGENTID&#39;, timestamp: 0, nonceStr: &#39;&#39;, signature: &#39;&#39;, jsApiList: [&#39;chooseImage&#39;, &#39;previewImage&#39;, &#39;scanQRCode&#39;] } onMounted(async () => { // 获取签名(需对接后端API) const { data } = await axios.get(&#39;/api/get-signature&#39;) wx.config({ ...wxConfig, timestamp: data.timestamp, nonceStr: data.noncestr, signature: data.signature }) wx.ready(() => { console.log(&#39;SDK 初始化完成&#39;) }) wx.error(res => { console.error(&#39;SDK 初始化失败:&#39;, res) }) }) </script> ``` ### 五、企业微信路由适配 ```javascript // 处理页面跳转 function navigateTo(url) { if (typeof wx !== &#39;undefined&#39; && wx.miniProgram) { wx.miniProgram.navigateTo({ url }) } else { window.location.href = url } } ``` ### 六、部署与调试 1. **服务器部署** -打包后的 H5 资源部署至配置的域名服务器 - 确保 HTTPS 证书有效 2. **调试工具使用** - 企业微信开发者工具调试 - 浏览器端调试: ```javascript // 本地开发时注入调试参数 localStorage.setItem(&#39;debug&#39;, &#39;true&#39;) ``` ### 七、常见问题处理 1. **签名无效错误** - 检查服务器时间是否同步 - 验证签名算法是否正确: ``` 签名算法 = sha1(排序后的jsapi_ticket、noncestr、timestamp、url) ``` 2. **白屏问题** - 检查 `publicPath` 配置 - 添加企业微信 UA 检测: ```javascript const isWeChatWork = /wxwork/i.test(navigator.userAgent) ``` 3. **API 调用限制** ```javascript // 安全调用示例 function safeWxCall(apiName, ...args) { if (typeof wx[apiName] === &#39;function&#39;) { wx[apiName](...args) } else { console.warn(`API ${apiName} 可用`) } } ``` ### 八、发布流程 1. 完成测试后,在企业微信后台提交应用审核 2. 审核通过后分配可见范围 3. 用户通过企业微信工作台访问应用 **注意事项:** 1. 企业微信 H5 应用需使用 **iOS 9.0+/Android 6.0+** 及以上系统版本 2. 单页面应用需配置 `404 fallback` 到入口文件 3. 定期清理 `localStorage` 避免缓存问题 通过以上步骤,即可将 UniApp+Vue3 项目集成到企业微信环境。建议在真机环境下进行最终测试,确保所有企业微信 API 的正常调用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvzhengyang

感谢,励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值