SparkAR更新后旧版JS脚本出现大量报错无法运行,如何修复?
SparkAR版本升级后合法脚本报错解决方案
你遇到的无语法错误但批量报错的情况,是SparkAR版本迭代的非语法类变更导致的,按以下步骤排查即可解决:
- 修正异步API调用逻辑
最新版本SparkAR的所有资源查询类API(场景元素、材质、纹理查找等)均返回Promise对象,旧版本的同步调用写法会直接抛出异常。你需要将所有资源查询逻辑放入async自执行函数中,配合await关键字异步获取资源。 - 补充项目权限声明
新版本强制校验能力调用权限,你用到的触摸交互、场景资源读写能力,需要提前在项目设置的「Capabilities」面板勾选对应权限,未声明的能力调用会直接被拦截报错。 - 替换废弃属性接口
旧版本中用于设置材质纹理的diffuse属性已被废弃,当前版本统一使用baseColorTexture设置基础颜色纹理,其余废弃属性可对照官方最新API文档逐一替换。 - 清理项目残留缓存
版本升级后残留的旧编译缓存会导致合法脚本也出现异常报错,关闭SparkAR后删除项目根目录下的build文件夹和.cache临时目录,重新打开项目触发全量编译即可。
兼容最新版本的最简功能示例
const Scene = require('Scene'); const TouchGestures = require('TouchGestures'); const Materials = require('Materials'); const Textures = require('Textures'); (async function () { // 替换为你的项目内对应元素的自定义名称 const targetPlane = await Scene.root.findFirst('你的3D平面名称'); const bindMaterial = await Materials.findFirst('平面绑定的材质名称'); const targetTexture = await Textures.findFirst('要切换的纹理名称'); // 绑定点击切换逻辑 TouchGestures.onTap(targetPlane).subscribe(() => { bindMaterial.baseColorTexture = targetTexture; }); })();
原报错脚本截图


内容的提问来源于stack exchange,提问作者Rumata
相关产品推荐
相关产品推荐

