Я пишу гру в 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 для відповіді № 1Three.js використовує XMLHttpRequest
для завантаження таких файлів, як ваш JSON файл. XMLHttpRequest
вбудований у середовищах браузера, але він не вбудований у середовищі Node, тому він не визначений, отже, помилка. Вам доведеться встановити xmlhttprequest
пакет через NPM, щоб використовувати його з Node.
Оскільки Three.js не вимагає xmlhttprequest
модуль, вам доведеться встановити глобальну змінну, щоб new XMLHttpRequest
буду працювати:
global.XMLHttpRequest = require("xmlhttprequest");