Three.js: JSM / GLTFLoader: erro de Webpack usando jsm

Criado em 9 mar. 2019  ·  3Comentários  ·  Fonte: mrdoob/three.js

Descrição do problema

Estou usando three.js em um projeto Angular com webpack como bundler.
Ao tentar carregar um arquivo GLTF, um ReferenceError é lançado:

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

Referindo-se a esta linha de código:

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

No meu código TypeScript, eu importo o carregador desta maneira:

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

Acho que para consertar isso, _BufferGeometryUtils_ deve ser exportado em _three.module.js_ ou o bloco de código deve ser removido da versão jsm de GLTFLoader, pois o objeto global _THREE_ não está definido.

Também descobri que _BufferGeometryUtils_ é uma exceção no script _modularize_:

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

Versão Three.js
  • [] Dev
  • [x] r102
  • [] ...
Navegador
  • [x] Todos eles
  • [ ] Cromada
  • [ ] Raposa de fogo
  • [] Internet Explorer
SO
  • [x] Todos eles
  • [ ] Janelas
  • [ ] Mac OS
  • [] Linux
  • [] Android
  • [] iOS
Requisitos de hardware (placa gráfica, dispositivo VR, ...)
Bug

Comentários muito úteis

Eu tentei o GLTFLoader atualizado no branch dev e está funcionando bem, esperando o lançamento.
Obrigado pela correção!

Para qualquer pessoa que precise de uma correção urgente, use o pacote npm 'three-gltf-loader':

import GLTFLoader from 'three-gltf-loader';

Todos 3 comentários

Infelizmente, os módulos examples/jsm ainda não estão totalmente funcionais. Ainda estou trabalhando nisso.

Outro usuário relatou o mesmo problema aqui:

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

A fusão do # 15582 deve resolver esse problema, certo?

Eu tentei o GLTFLoader atualizado no branch dev e está funcionando bem, esperando o lançamento.
Obrigado pela correção!

Para qualquer pessoa que precise de uma correção urgente, use o pacote npm 'three-gltf-loader':

import GLTFLoader from 'three-gltf-loader';

Esta página foi útil?
0 / 5 - 0 avaliações