[Bug report] Skyline 模式下 worklet 函数写在 composition api 的 setup 中不被触发,写在 methods 中可以触发
ItsRyanWu opened this issue · comments
问题描述
请用简洁的语言描述你遇到的bug,至少包括以下部分,如提供截图请尽量完整:
- 问题触发的条件
Skyline 模式下 worklet 函数写在 composition api 下的 setup 中不被触发,写在 options api 下的 methods 对象中可以触发 - 期望的表现
写在 setup 中也可以触发 - 实际的表现
写在 setup 中不被触发
环境信息描述
至少包含以下部分:
- 系统类型(Mac或者Windows)
macOS Sonoma 14.2 - Mpx依赖版本(@mpxjs/core、@mpxjs/webpack-plugin和@mpxjs/api-proxy的具体版本,可以通过package-lock.json或者实际去node_modules当中查看)
"dependencies": {
"@mpxjs/api-proxy": "^2.9.0",
"@mpxjs/core": "^2.9.0",
"@mpxjs/fetch": "^2.9.0",
"@mpxjs/pinia": "^2.9.0",
"@mpxjs/store": "^2.9.0",
"@mpxjs/utils": "^2.9.0",
"pinia": "^2.0.14",
"vue": "^2.7.0",
"vue-demi": "^0.14.6",
"vue-i18n": "^8.27.2",
"vue-i18n-bridge": "^9.2.2",
"vue-router": "^3.1.3"
},
- 小程序开发者工具信息(小程序平台、开发者工具版本、基础库版本)
基础库:3.3.2
![image](https://private-user-images.githubusercontent.com/17338101/299708048-66ffda12-9328-4255-a570-ef5f47941531.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTcxMzExNjgsIm5iZiI6MTcxNzEzMDg2OCwicGF0aCI6Ii8xNzMzODEwMS8yOTk3MDgwNDgtNjZmZmRhMTItOTMyOC00MjU1LWE1NzAtZWY1ZjQ3OTQxNTMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MzElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTMxVDA0NDc0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjNzJmY2QxNjFhYjYwYjEyZDU4MmM1NTY5OWU4ODE4NWY0MmJlZjUzMTNmMjg2OTI4NGE3NzllMzNlMDBhYmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zX5AXOsawY4lW5fdYR6n73rfIvjN80aNGs33sxyl0sI)
最简复现demo
一般来说通过文字和截图的描述我们很难定位到问题,为了帮助我们快速定位问题并修复,请按照以下指南编写并上传最简复现demo:
- 根据现有项目遇到的问题,尝试精简代码,确定问题的最小复现条件
- 使用脚手架创建新项目,基于最小复现条件编写稳定的最简复现demo
- 删除项目中的node_modules部分,打包项目,并拖拽到issue输入框中上传(或提供远程可下载地址)
这个问题同微信确认目前没有支持,不过他们会考虑后续如何支持这种写法,在微信支持之前可以先用混合写法把worklet函数静态定义在methods中
这是因为terser默认会删除非标准的directives,可以更改terser配置规避这个问题:
new TerserPlugin({
// terserOptions参考 https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions
terserOptions: {
compress: {
// terser的默认行为会把某些对象方法转为箭头函数,导致ios9等不支持箭头函数的环境白屏,详情见 https://github.com/terser/terser#compress-options
arrows: false,
// terser默认会删除非标准directive,为了保障skyline worklet的正常工作,需关闭该配置
directives: false
}
}
}
我们更建议的做法是安装微信提供的babel插件,不仅可以规避上面这个问题,也不用依赖微信开发者工具的es5转义和worklet编译,插件地址:
https://www.npmjs.com/package/babel-plugin-worklet
感谢