Javascript node.js和three.js作为模块;文档编号已定义为3.0

Javascript node.js和three.js作为模块;文档编号已定义为3.0,javascript,node.js,module,express,three.js,Javascript,Node.js,Module,Express,Three.js,我正在尝试使用app来运行我从另一个.js文件中创建的一些函数,该文件定义了这些函数,允许我在画布上绘制对象 app.get('/visualization.html', function(req, res) { //Set up scene and camera width = 1980; height = 1020; var scene = new THREE.Scene(); var camera = new THREE.Perspect

我正在尝试使用app来运行我从另一个.js文件中创建的一些函数,该文件定义了这些函数,允许我在画布上绘制对象

    app.get('/visualization.html', function(req, res) {

    //Set up scene and camera
    width = 1980;
    height = 1020;

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
    camera.position.set(0,-40,160);
    camera.up = new THREE.Vector3(0,0,1);
    camera.lookAt(new THREE.Vector3(0.3,2,2));

    //Set up renderer
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(width, height);
    document.body.appendChild(renderer.domElement);

    res.send(visualization.drawMultipleSunsAndPlanets(3, 4, 8, 4))
    res.send(visualization.keyboardListener())
    res.send(visualization.animate())
}); 
这是app.js中的代码片段,我在其中调用visualization.js中的一组特定函数。(我试图直接从应用程序中定义画布和渲染器……但我相当肯定我做得不对

尝试运行app.js时出现的错误:

    $ node app.js
Listening on port 3000
THREE.WebGLRenderer 59dev
ReferenceError: document is not defined
    at new THREE.WebGLRenderer (c:\Users\Brian\documents\visualizer\node_modules
\three\three.js:18671:70)
    at c:\Users\Brian\documents\visualizer\app.js:80:17
    at callbacks (c:\Users\Brian\documents\visualizer\node_modules\express\lib\r
outer\index.js:164:37)
    at param (c:\Users\Brian\documents\visualizer\node_modules\express\lib\route
r\index.js:138:11)
    at pass (c:\Users\Brian\documents\visualizer\node_modules\express\lib\router
\index.js:145:5)
    at Router._dispatch (c:\Users\Brian\documents\visualizer\node_modules\expres
s\lib\router\index.js:173:5)
    at Object.router (c:\Users\Brian\documents\visualizer\node_modules\express\l
ib\router\index.js:33:10)
    at next (c:\Users\Brian\documents\visualizer\node_modules\express\node_modul
es\connect\lib\proto.js:193:15)
    at resume (c:\Users\Brian\documents\visualizer\node_modules\express\node_mod
ules\connect\lib\middleware\static.js:65:7)
    at SendStream.error (c:\Users\Brian\documents\visualizer\node_modules\expres
s\node_modules\connect\lib\middleware\static.js:80:37)
我不知道THREE.WebGLRenderer中这些未定义/缺失的文档是什么。如果有人能帮助我,那将对我帮助很大

谢谢,,
Brian

three.js应该在客户端(即在浏览器中)使用,而不是在服务器上使用。Node.js只是没有必要的API。要做到这一点,只需使用three.js相关代码将
标记添加到html文件中,并使用
static()
中间件。还记得包括
three.js
源代码,并将其公开给浏览器。如果您想保存node.js好东西,比如
require()
在浏览器中,您也可以尝试。

我有一个单独的名为visualizer.html的文件,按照您的建议,在其中我只运行一个html文件。我只是想知道这是否是唯一可能的选项,因为我的应用程序的其余部分在app.js上运行,我真的希望能够轻松地将参数传递到图形中功能:(