在Node中使用JSONLoader时未定义XMLHttpRequest

Don*_*Gaz 2 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);
});
Run Code Online (Sandbox Code Playgroud)

但是,服务器会死掉并吐出

var request = new XMLHttpRequest();
ReferenceError: XMLHttpRequest is not defined
    at FileLoader.load
Run Code Online (Sandbox Code Playgroud)

该请求在未来node_modules\three\build\three.js:29258,凡XMLHttpRequest而成.

为什么会这样?我做错了什么,或者Three.js的这部分被Node打破了?

Li3*_*357 7

Three.js使用an XMLHttpRequest来加载诸如JSON文件之类的文件.XMLHttpRequest是在浏览器环境中内置的,但它不是内置在Node环境中,因此没有定义,因此错误.您必须xmlhttprequest通过NPM 安装软件包才能将其与Node一起使用.

由于Three.js不需要该xmlhttprequest模块,您将不得不设置一个全局变量,以便它new XMLHttpRequest可以工作:

global.XMLHttpRequest = require("xmlhttprequest");
Run Code Online (Sandbox Code Playgroud)