Three.js: JSM / GLTFLoader: error de paquete web al usar jsm

Creado en 9 mar. 2019  ·  3Comentarios  ·  Fuente: mrdoob/three.js

Descripción del problema

Estoy usando three.js en un proyecto Angular con webpack como paquete.
Al intentar cargar un archivo GLTF, se lanza un ReferenceError:

ERROR Error: Uncaught (in promise): ReferenceError: THREE is not defined ReferenceError: THREE is not defined at GLTFLoader.js:2715

Refiriéndose a esta línea de código:

https://github.com/mrdoob/three.js/blob/1bb6d19805a30e6edb5650d40ab248a3f9ce918e/examples/jsm/loaders/GLTFLoader.js#L2715

En mi código TypeScript, importo el cargador de esta manera:

import { GLTFLoader} from 'three/examples/jsm/loaders/GLTFLoader';

Supongo que para solucionar esto, o _BufferGeometryUtils_ debe exportarse en _three.module.js_ o el bloque de código debe eliminarse de la versión jsm de GLTFLoader, ya que el objeto global _THREE_ no está definido.

También encontré que _BufferGeometryUtils_ es una excepción en el script _modularize_:

https://github.com/mrdoob/three.js/blob/e88edaa2caea2b61c7ccfc00d1a4f8870399642a/utils/modularize.js#L15

Versión de Three.js
  • [] Desarrollo
  • [x] r102
  • [] ...
Navegador
  • [x] Todos ellos
  • [ ] Cromo
  • [] Firefox
  • [ ] Explorador de Internet
SO
  • [x] Todos ellos
  • [] Windows
  • [ ] Mac OS
  • [] Linux
  • [] Android
  • [] iOS
Requisitos de hardware (tarjeta gráfica, dispositivo VR, ...)
Bug

Comentario más útil

Probé el GLTFLoader actualizado en la rama de desarrollo y está funcionando bien, esperando el lanzamiento.
¡Gracias por la solución!

Para cualquiera que necesite una solución urgente, utilice el paquete npm 'three-gltf-loader':

import GLTFLoader from 'three-gltf-loader';

Todos 3 comentarios

Lamentablemente, los módulos examples/jsm aún no funcionan completamente. Todavía estoy trabajando en esto.

Otro usuario informó el mismo problema aquí:

https://discourse.threejs.org/t/importing-three-r102-examples-jsm-gltfloader-into-angular-7-project/6484

La fusión de # 15582 debería resolver este problema, ¿verdad?

Probé el GLTFLoader actualizado en la rama de desarrollo y está funcionando bien, esperando el lanzamiento.
¡Gracias por la solución!

Para cualquiera que necesite una solución urgente, utilice el paquete npm 'three-gltf-loader':

import GLTFLoader from 'three-gltf-loader';

¿Fue útil esta página
0 / 5 - 0 calificaciones