vue3 ts ‘get‘ on proxy: property ‘provider‘ is a read-only and non-configurab

本文介绍了在Vue3、TypeScript和Webpack环境下,遇到引入外部JS库并尝试调用其方法时,由于双向绑定(ref, reactive)导致的错误。错误信息涉及到proxy的只读属性问题。解决方案包括避免使用双向绑定,直接将变量挂载到window对象上,或者使用markRaw或toRaw获取原始数据。通过这两种方法,成功解决了调用JS库函数时的异常问题。
摘要由CSDN通过智能技术生成

Vue3 + ts + webpack
在public/index.html引入其他js工具库
调用js库提示以下错误:

‘get’ on proxy: property ‘provider’ is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected ‘#’ but got ‘#’)

调用工具库内部就报错,不调用就不报错,那问题就在这个调用工具库那个区块使用上。
网上大量搜查,发现是赋值的参数绑定这个双向绑定。
js工具库赋值给 ref 或 reactive 声明的变量导致的。
问题代码:
js工具库:test.js

const params = ref(null)
params.value =  testJS.init()
params.value.testJSMethods()  再次调用js工具库内的函数就抛出异常

或

const  dataAll= reactive({
	params: ''
})
dataAll.params =  testJS.init()
dataAll.params.testJSMethods()  再次调用js工具库内的函数就抛出异常

方法一

修正,params参数声明不要使用双向绑定(ref,reactive)。


window.params =  testJS.init()

window.params.testJSMethods() 

这个修改就成功了,大家也可以不用绑定在window上,可以用其他的方式存储变量,不是双向(ref,reactive)的就行。

方法二

import { markRaw,toRaw } from 'vue';

const params = ref(null)

params.value = markRaw( testJS.init())  //获取原始数据设置
or 
params.value = toRaw( testJS.init())  //获取原始数据设置

params.value.testJSMethods()  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值