Javascript 在节点中使用JSONLoader时未定义XMLHttpRequest
我正在用Three.js编写一个游戏,作为一个多人游戏,我需要验证服务器端的客户端位置以防止作弊。我当前正在尝试在服务器上加载模型,如下所示: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,
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模块
。你应该去看看。