TypeError: e.indexOf is not a function解决方法

报错截图:

在这里插入图片描述

$(window).load(function(){})在高版本中已经废弃,
用:$(window).on('load',function(){});替代
在使用 `uni.share` 时,若遇到 `TypeError: common_vendor.index.share is not a function` 错误,通常是因为开发者尝试通过 `uni.$share` 或 `common_vendor.index.$share` 调用 `uni.share` 方法时,该方法未被正确挂载或被其他逻辑覆盖。这种错误在封装全局方法(如 `$showMsg`)时也常出现,提示“not a function”说明目标函数未被正确注册或被覆盖。 解决此类问题的关键在于确保 `uni.share` 的调用方式符合框架的规范,并避免对原生 API 的覆盖。以下为可行的解决方案: ### 1. 直接使用 `uni.share` 而非 `common_vendor.index.share` 在 Vue 3 的 Composition API 模式下,应直接调用 `uni.share`,而非通过 `common_vendor.index` 访问。若仍需封装全局方法,应确保其在应用初始化时正确注入,避免覆盖原始 API。 ```javascript uni.share({ provider: 'weixin', scene: 'WXSceneSession', type: 0, href: 'https://example.com', title: '分享标题', summary: '分享描述', imageUrl: 'https://example.com/share-image.png', success: () => { console.log('分享成功'); }, fail: (err) => { console.error('分享失败', err); } }); ``` ### 2. 避免封装覆盖原生方法 若在封装 `uni.$share` 时出现错误,应检查是否在 `main.js` 或其他全局入口中错误地覆盖了 `uni` 对象的方法。应确保封装逻辑不会影响原生 API 的调用路径。例如,封装全局提示方法时应使用不同的命名,避免与现有 API 冲突: ```javascript // main.js const app = createApp(App); app.config.globalProperties.$showMsg = function (msg) { uni.showToast({ title: msg }); }; app.mount('#app'); ``` ### 3. 检查运行时环境与平台兼容性 某些平台(如 H5 或部分小程序)可能不完全支持 `uni.share` 的所有参数或功能。应通过 `uni.getSystemInfoSync()` 获取当前运行平台,并根据平台特性动态调整分享逻辑,避免调用不支持的方法或参数。 ```javascript const systemInfo = uni.getSystemInfoSync(); if (systemInfo.platform === 'devtools') { console.warn('当前为开发工具环境,部分分享功能可能受限'); } ``` ### 4. 使用 `uni.getServices` 确认分享服务可用性 在调用 `uni.share` 前,可先使用 `uni.getServices` 检测当前设备是否支持目标分享服务,避免因服务不可用导致调用失败。 ```javascript uni.getServices({ success: function (res) { if (res.services.includes('weixin')) { // 微信分享服务可用 } } }); ``` ### 相关问题 1. 如何在 uni-app 中正确封装全局方法以避免覆盖原生 API? 2. uni.getServices 方法如何用于检测分享服务是否可用? 3. 为什么在 H5 平台调用 uni.share 时可能出现失败? 4. 如何在不同平台(App/H5/小程序)中实现兼容的分享逻辑? 5. uni.share 是否支持分享到微信小程序?如何配置?
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值