uniapp eval is not a function 报错如何解决?
在uniapp开发中遇到"eval is not a function"报错,具体场景是在使用eval()函数时出现的。请问这个错误是什么原因导致的?应该如何解决?我尝试过在H5端运行是正常的,但在小程序端就报这个错。是否需要特殊的配置或替代方案?
2 回复
uniapp中不支持eval函数,建议改用JSON.parse、Function构造函数或eval5库替代。
在 UniApp 中遇到 eval is not a function 报错,通常是因为在非浏览器环境中(如小程序平台)使用了 eval() 函数,而小程序的安全限制禁用了该函数。以下是解决方案:
1. 避免使用 eval()
小程序平台出于安全考虑不支持 eval(),建议改用以下替代方案:
- JSON 解析:如果处理 JSON 数据,使用
JSON.parse()。// 错误示例 let data = eval('(' + jsonString + ')'); // 正确示例 let data = JSON.parse(jsonString); - 函数封装:动态逻辑可通过预定义函数或条件判断实现。
// 例如,根据类型调用不同函数 const handlers = { type1: () => { /* 逻辑1 */ }, type2: () => { /* 逻辑2 */ } }; handlers[type]?.();
2. 检查第三方库
如果使用了第三方库(如某些工具库),确认其是否调用了 eval()。可尝试更新库版本或寻找替代库。
3. UniApp 条件编译
若需区分平台,使用条件编译:
// #ifdef H5
// 仅在 H5 平台使用 eval
eval(codeString);
// #endif
4. 使用 new Function()(谨慎)
部分平台可能支持 new Function(),但同样受限制,非必要不推荐:
const dynamicFunc = new Function('return ' + codeString);
dynamicFunc();
总结
优先通过重构代码移除 eval(),利用安全的方法处理动态逻辑。检查代码和依赖库,确保兼容小程序环境。

