/ / XMLHttpRequest не визначено при використанні JSONLoader в Node - javascript, node.js, three.js

XMLHttpRequest не визначено при використанні JSONLoader у вузлі - javascript, node.js, three.js

Я пишу гру в Three.js, і як багатокористувацька гра, мені потрібно перевірити серверну позицію клієнта, щоб запобігти обману. Зараз я намагаюся завантажити модель на сервер як таку:

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);
});

Однак сервер гине і випльовується

var request = new XMLHttpRequest();
ReferenceError: XMLHttpRequest is not defined
at FileLoader.load

Цей запит надходить на node_modulesthreebuildthree.js:29258, де XMLHttpRequest зроблено

Чому це відбувається? Я щось роблю не так, або ця частина Three.js зламана для Node?

Відповіді:

7 для відповіді № 1

Three.js використовує XMLHttpRequest для завантаження таких файлів, як ваш JSON файл. XMLHttpRequest вбудований у середовищах браузера, але він не вбудований у середовищі Node, тому він не визначений, отже, помилка. Вам доведеться встановити xmlhttprequest пакет через NPM, щоб використовувати його з Node.

Оскільки Three.js не вимагає xmlhttprequest модуль, вам доведеться встановити глобальну змінну, щоб new XMLHttpRequest буду працювати:

global.XMLHttpRequest = require("xmlhttprequest");