常见问题
微信常见问题
TypeError: Cannot call a class as a function
常见于开发者工具开启 "将 js 编译成 es5" 选项
相关现象:
- 模型显示全白 / 不能加载贴图
- THREE.GLTFLoader: Couldn't load texture
解决办法:
- 关闭该选项,因为绝大部分基础库版本已支持 es6, 详见 miniprogram-compat。
- 确实需要开启选项,例如使用了手势系统(需编译 worklet 代码),可以参考微信es6转es5相关配置。
PMREMGenerator.fromScene
返回纯黑贴图
解决办法:
- 在 THREE.WebGLRenderer 每次 render 函数调用后手动清除深度缓冲(clearDepth),可能会存在位置问题。
- 在 @minisheep/three-platform-adapter/plugin 插件中开启
features.bugPatch.wechatDepthBuffer
选项(uni-app已在微信环境下默认开启)。
开发者工具预览/真机调试提示语法错误(Unexpected token)
引入 node_modules
中的模块使用了较新的语法特性,需要开发者工具开启 "将 js 编译成 es5" 选项。
解决办法: 手动使用 babel
插件进行转换,参考配置:
ts
// vite.config.ts
import { babel } from '@rollup/plugin-babel';
export default {
plugins: [
babel({
babelHelpers: 'bundled',
babelrc: false,
presets: [
[
'@babel/preset-env',
{
targets: {
//例如 @tresjs/core 中的空值合并操作符(??)会导致错误
chrome: 79 // ?? 的最低支持版本为 80, 所以这里我们设置为 79
},
}
]
],
include: ['**/node_modules/@tresjs/**']
})
]
}
ios 真机调试提示 Error: 非法的文件
包含 eval
相关内容

在这个前提下,部分 es6+ 特性在经过开发者工具内置 babel
转换后会产生 eval 相关代码导致提示 “非法错误”, 并非项目相关代码使用了 eval 导致的错误。
解决办法:
- 使用 android 真机调试。
- 等待微信小程序官方修复。