Vue3+h5项目用Android支付宝打开白屏,android微信+IOS微信、支付宝打开正常

文章讲述了在使用Vue3开发的H5页面在Android支付宝中显示白屏的问题,原因在于支付宝使用的是UC浏览器内核(Chrome69),而globalThis在Chrome71才被引入。解决方案包括使用vite的plugin-legacy插件进行打包,并在index.html中添加globalThis的声明,确保低版本浏览器的兼容性。经过处理后,页面在360极速浏览器和支付宝内都能正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:使用vue3写的H5网页,用Android支付宝打开title能显示,内容全是白屏。

推测:浏览器内核问题;

微信使用腾讯x5内核,IOS使用系统浏览器内核;so,看看Android支付宝APP使用的内核是什么.

下拉看到支付宝使用的UC浏览器内核;

浏览器内核检测工具 Browser kernel v2.6 测试查看浏览器内核版本用二维码生成,支付宝扫码进入查看浏览器内核版本;

 浏览器内核版本是Chrome 69.0.3497.100,发现用UC浏览器打开网页正常,UC浏览器查看内核版本,UC浏览器的内核版本高。so,这期间发生什么?

找一个相同版本的内核浏览器

使用360极速浏览器或用Android写一个webview兼容69版本,以用来查看为什么显示白屏;

发现报错:

Uncaught ReferenceError: globalThis is not defined
    at overlay.ts:140

globalThis - JavaScript | MDN

可以看到chrome71版本才添加了globalThis ,所以报错未定义。 

解决方式一  基于vite打包

  1. npm install @vitejs/plugin-legacy
  2. vite.config.ts配置
    import legacy from '@vitejs/plugin-legacy';
    
    
    
      build: {
        target: 'es2015',
      },
    
    plugins:[
     legacy({
          targets: ['Chrome 69'],
          additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
          modernPolyfills: true,
        }),
    ]

  3. index.html   添加globalThis声明  
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/svg+xml" href="/vite.svg" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Vite + Vue + TS</title>
        <script>
            this.globalThis || (this.globalThis = this)
        </script>
    </head>
    
    <body>
        <div id="app"></div>
        <script type="module" src="/src/main.ts">
            this.globalThis || (this.globalThis = this)
        </script>
    </body>
    
    </html>

    使用360极速浏览器和支付宝APP测试打开都正常显示;

git 地址 h5_vant: vant4+vue,屏幕适配

<think>嗯,用户想知道怎么用uniapp和Vue3打包成Web小程序然后挂到企业微信上。首先,我得理清楚整个流程,分步骤来。首先,uniapp支持Vue3,这点没问题。用户可能已经创建好了项目,但需要确认他们的项目结构是否正确,比如是否用了正确的Vue3模板。 然后,打包成Web应用,应该是生成H5页面吧?这时候需要配置publicPath,可能涉及企业微信的路径问题。企业微信的小程序其实是他们自己的机制,可能需要把H5部署到服务器,然后配置企业微信的应用信息,比如CorpID和AgentID这些。用户可能对如何配置这些参数不太清楚,得详细说明。 接下来,企业微信的JS-SDK接入可能是个关键点。需要引入SDK,处理权限验证,调用相关API。用户可能会遇到权限错误,或者配置不对导致无法调用接口的情况,需要提醒他们检查安全域名和配置是否正确。 还有,企业微信里的路由问题,H5在小程序里可能需要使用企业微信的路由方式,比如wx.miniProgram.navigateTo,这部分需要用户在代码里做适配。用户可能不知道这点,导致页面跳转有问题。 调试也是个重要环节,需要告诉用户如何使用企业微信的调试工具和浏览器开发者工具,不然他们可能不知道怎么测试和排查问题。 最后,部署和发布流程,用户可能需要指导如何打包H5,部署到服务器,然后在企业微信后台配置应用。可能还要提到版本更新和缓存处理,避免出现缓存导致的问题。 总的来说,需要分步骤解释,从项目配置到打包,再到企业微信的接入和调试,每个环节都可能有问题,得详细说明注意事项,确保用户能顺利操作。同时,要提醒用户检查依赖版本,尤其是uniapp对Vue3的支持情况,避免版本不兼容。</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 的正常调用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值