【问题标题】:XMLHttpRequest not defined when using JSONLoader in Node在 Node 中使用 JSONLoader 时未定义 XMLHttpRequest
【发布时间】:2017-07-16 13:15:28
【问题描述】:

我正在用 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 破坏了?

【问题讨论】:

    标签: javascript node.js three.js


    【解决方案1】:

    Three.js 使用XMLHttpRequest 来加载文件,例如您的 JSON 文件。 XMLHttpRequest 是在浏览器环境中内置的,但它不是在 Node 环境中内置的,所以它没有定义,因此出现错误。你必须通过 NPM 安装 xmlhttprequest 包才能在 Node.js 中使用它。

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

    global.XMLHttpRequest = require("xmlhttprequest");
    

    【讨论】:

    • 我已经发布了an answer 关于为什么不在所有情况下都使用xmlhttprequest module。你应该检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2021-12-27
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多