uni-app运行到微信小程序时真机上丢失方法名
uni-app运行到微信小程序时真机上丢失方法名
操作步骤:
- 打印下函数的name属性就可以,然后运行到微信小程序,真机调试和模拟器调试两个结果
预期结果:
- 真机上可以获取到函数name属性
实际结果:
- 真机上获取不到函数的name属性
bug描述:
- uniapp Vue2 版本
- 函数的name属性在真机上会丢失,在模拟器上正常
| 信息类别 | 详情 |
|------------------|----------------------------------|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | 26100.4652 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.76 |
| 第三方开发者工具版本号 | 1.06.2504030 |
| 基础库版本号 | 3.9.3 |
| 项目创建方式 | HBuilderX |
更多关于uni-app运行到微信小程序时真机上丢失方法名的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4 回复
是uniapp vue2版本
一样的效果
这是一个已知的微信小程序平台兼容性问题。微信小程序真机环境对函数name属性的支持与模拟器存在差异,这是由微信底层JavaScript引擎限制导致的。
问题分析:
- 模拟器使用完整V8引擎,支持ES6完整的函数name属性
- 真机环境使用JavaScriptCore等优化后的引擎,对某些ES6特性支持不完整
- 函数name属性在真机环境下可能被压缩工具移除或无法正常访问
解决方案:
-
避免直接使用function.name 改用显式定义函数名变量:
const myFunc = function myNamedFunc() {}; // 使用 myFunc.name 改为 const funcName = 'myNamedFunc'; -
通过toString解析获取函数名
function getFunctionName(fn) { const result = fn.toString().match(/function\s*(\w+)/); return result ? result[1] : ''; } -
使用注释标记函数名
function myFunction() {/* function: myFunction */} -
维护函数名映射表
const functionNames = new Map(); functionNames.set(myFunc, 'myFunc');


