Estou escrevendo um jogo no Three.js e, como um jogo para vários jogadores, preciso verificar a posição do servidor no servidor para evitar trapaças. Atualmente, estou tentando carregar um modelo no servidor, como tal:
var THREE = require("three");
var loader = new THREE.JSONLoader();
loader.load( "./models/tree.json", function ( geometry, materials ) {
var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
res.send(mesh);
});
No entanto, o servidor morre e cospe
var request = new XMLHttpRequest();
ReferenceError: XMLHttpRequest is not defined
at FileLoader.load
Esta solicitação está chegando em node_modulesthreebuildthree.js:29258
, onde um XMLHttpRequest
é feito.
Por que isso está acontecendo? Estou fazendo algo errado ou esta parte do Three.js está quebrada para o Node?
Respostas:
7 para resposta № 1Three.js usa um XMLHttpRequest
para carregar arquivos como o seu arquivo JSON. XMLHttpRequest
está embutido nos ambientes de navegadores, mas não está embutido em um ambiente Node; portanto, não está definido, portanto, o erro. Você precisará instalar o xmlhttprequest
pacote através do NPM para usá-lo com o Node.
Como o Three.js não requer o xmlhttprequest
módulo, você precisará definir uma variável global para que new XMLHttpRequest
vai funcionar:
global.XMLHttpRequest = require("xmlhttprequest");