在Node中使用JSONLoader时未定义XMLHttpRequest

时间:2017-02-25 18:40:54

标签: 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);
});

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

var request = new XMLHttpRequest();
ReferenceError: XMLHttpRequest is not defined
    at FileLoader.load

此请求来自node_modules\three\build\three.js:29258,其中XMLHttpRequest已生成。

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

1 个答案:

答案 0 :(得分:7)

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

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

new XMLHttpRequest