我正在尝试在名为可视化的文件中构建可视化,其中我已将所有内容都转换为模块导出函数。
我有一个名为app的文件,当我运行它时,调用那些函数(比如drawSomething),我得到这样的错误:
$ node app.js
THREE.WebGLRenderer 59dev
C:\用户\布赖恩\文件\可视\ node_modules \ 3个\ three.js所:18671 var _canvas = parameters.canvas!== undefined? parameters.canvas:document.c ^ ReferenceError:未定义文档 在新的THREE.WebGLRenderer(c:\ Users \ Brian \ documents \ visualizer \ node_modules \ 3个\ three.js所:18671:70) 在对象。 (C:\用户\布莱恩\文件\可视\ visualization.js: 15:16) 在Module._compile(module.js:456:26) at Object.Module._extensions..js(module.js:474:10) 在Module.load(module.js:356:32) 在Function.Module._load(module.js:312:12) 在Module.require(module.js:364:17) at require(module.js:380:17) 在对象。 (C:\用户\布赖恩\文件\可视\ app.js:19:18) 在Module._compile(module.js:456:26)
我不确定这意味着什么以及为什么会出现这样的问题。如果有人熟悉在node.js中使用three.js,请给我一些指示。
谢谢, 布赖恩
P.S。 - 我是以非常黑客的方式做这件事,这很糟糕。但是,我理解如何使用three.js在HTML文件中呈现内容,我只是不确定将所有内容转换为函数并从另一个.js文件中调用它们的过程。
答案 0 :(得分:0)
需要从浏览器环境运行Three.js和WebGL才能工作。您的错误似乎是缺少document
,这是一个特定于浏览器的全局变量,引用当前的HTML DOM等。我认为除了document
和window
之外,node.js是缺少像canvas
这样的Three.js使用的各种其他浏览器对象/ API,最重要的是,WebGL画布上下文。
如果有一些可用于node.js的库来支持画布,那么您可能只使用CanvasRenderer。另外,命令行可编写脚本的浏览器PhantomJS应该能够支持CanvasRenderer,并且可以挂钩到node.js.一个名为SlimerJS的类似项目也应该支持WebGLRenderer,但是它使用的是一个完整的浏览器。