开发环境
- Ionic4 + Angular8 + Threejs(r111)
- Ubuntu18.04
- Visual Studio Code
错误提示
项目中使用到了threejs库, 在添加了OrbitControls之后构建出现了如下错误:
VM1988 vendor.js:40772 ERROR TypeError: Cannot read property 'addEventListener' of undefined
at new OrbitControls (VM2167 pages-home-home-module.js:64021)
原因解析及解决方法
这是由于threejs新版(r109之后)与上一个版本的兼容性引起的, 旧版在创建OrbitControls对象时的写法是OK的:
// controls: OrbitControls;
this.controls = new OrbitControls(this.camera);
在新版里则需要同时传入渲染器的domElement对象,如:
this.controls = new OrbitControls(this.camera, this.renderer.domElement);