在Node中使用JSONLoader时未定义XMLHttpRequest

我正在用Three.js写一个游戏,作为一个多人游戏,我需要在服务器端validation客户的位置以防止作弊。 我目前正在尝试在服务器上加载模型,如下所示:

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_modules\three\build\three.js:29258 ,在这里产生一个XMLHttpRequest

为什么发生这种情况? 我做错了什么,或者是这个Three.js的部分打破了节点?

Three.js使用XMLHttpRequest来加载诸如JSON文件的文件。 XMLHttpRequest内置在浏览器环境中,但是它并不是在Node环境中内置的,所以没有定义,所以错误。 你将不得不通过NPM安装xmlhttprequest包来和Node一起使用它。

由于Three.js不需要xmlhttprequest模块,所以你将不得不设置一个全局variables,以便new XMLHttpRequest可以工作:

 global.XMLHttpRequest = require("xmlhttprequest");