/ / XMLHttpRequest não definido ao usar JSONLoader no nó - javascript, node.js, three.js

XMLHttpRequest não definido ao usar o JSONLoader no Node - javascript, node.js, three.js

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 № 1

Three.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");