Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点中使用JSONLoader时未定义XMLHttpRequest_Javascript_Node.js_Three.js - Fatal编程技术网

Javascript 在节点中使用JSONLoader时未定义XMLHttpRequest

Javascript 在节点中使用JSONLoader时未定义XMLHttpRequest,javascript,node.js,three.js,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,

我正在用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\u modules\three\build\three.js:29258
,在那里发出
XMLHttpRequest

为什么会这样?是我做错了什么,还是Three.js的这一部分在Node中被破坏了?

Three.js使用加载文件,例如JSON文件
XMLHttpRequest
是浏览器环境中内置的,但它不是节点环境中内置的,因此它没有定义,因此会出现错误。您必须通过NPM安装该包,才能将其与Node一起使用

由于Three.js不需要
xmlhttprequest
模块,因此必须设置一个全局变量,以便
new xmlhttprequest
能够工作:

global.XMLHttpRequest = require("xmlhttprequest");
我已经发布了为什么不在所有情况下都使用
xmlhttprequest模块
。你应该去看看。