electon+vue3+vite 使用 webuploader Uncaught TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be accessed..
时间: 2024-04-28 15:21:58 浏览: 204
这个错误是因为 WebUploader 使用了 `arguments.callee`,而在严格模式下 `arguments.callee` 是被禁用的。而 Vue3 默认开启了严格模式,因此在 Electron + Vue3 + Vite 中使用 WebUploader 会出现这个错误。
解决方法是在 WebUploader 的上传组件中禁用严格模式。具体步骤如下:
1. 在 `src` 目录下新建一个 `utils` 文件夹,并在其中新建一个 `webuploader.js` 文件,代码如下:
```javascript
const WebUploader = require('webuploader')
// 禁用严格模式,避免 WebUploader 报错
WebUploader.Uploader.prototype._init = function () {
const self = this
// 拷贝属性,防止修改全局变量
this.stats = this._widgets = this._callbacks = {}
this.submittable = this._queue = []
this._initEvents()
this._initDelegates()
this._initHooks()
this._initData()
}
```
2. 在需要使用 WebUploader 的组件中引入 `webuploader.js` 文件,并使用 `require` 引入 WebUploader,代码如下:
```javascript
const WebUploader = require('webuploader')
require('@/utils/webuploader')
export default {
name: 'Uploader',
data() {
return {
uploader: null
}
},
mounted() {
// 初始化 WebUploader
this.uploader = WebUploader.create({
// ...配置
})
// ...其他逻辑
}
}
```
这样就可以在 Electron + Vue3 + Vite 中使用 WebUploader 了。注意,由于使用了 `require` 引入 WebUploader,需要在 `vite.config.js` 中添加相应的配置,具体可以参考 [vite 官方文档](https://vitejs.dev/guide/api-javascript.html#require-context)。
阅读全文