Angular项目中使用Three.js的OBJLoader2导入问题求助
在Angular中正确导入Three.js的OBJLoader2
我完全懂你碰到的问题——OBJLoader2确实不在Three.js的核心包里,而且直接从three/examples/js/loaders/OBJLoader2.js导入会因为模块格式不兼容(Angular用的是ES模块,这个路径下的是UMD格式文件)出问题。下面是具体的解决方法:
使用ES模块版本的OBJLoader2:Three.js的examples目录里,
jsm文件夹存放的是适配ES模块的工具类,你得从这个路径导入:import * as THREE from 'three'; import { OBJLoader2 } from 'three/examples/jsm/loaders/OBJLoader2';正常实例化加载器:导入完成后,就能像文档里那样创建OBJLoader2实例了:
const loader = new OBJLoader2(); // 举个加载模型的示例逻辑 loader.load('assets/models/your-model.obj', (object) => { // 把加载好的模型添加到场景中 yourThreeScene.add(object); });保证依赖版本匹配:记得检查
three和@types/three的版本是否一致,版本不匹配很容易导致类型提示错误或者导入失败。你可以打开package.json确认两者版本,要是不一致,重新安装对应版本就行:npm install three@<对应版本号> @types/three@<对应版本号> --save
如果还是碰到导入报错,可以临时在Angular的tsconfig.json里添加"skipLibCheck": true(跳过库类型检查),排查是不是类型定义的小问题,但优先保证版本匹配哦。
内容的提问来源于stack exchange,提问作者dc-p8
相关产品推荐
相关产品推荐

