我正在尝试使用 Meteor 和 Three.js 构建一个应用程序,但不幸的是,将这两个部分绑定在一起非常不成功。
Three.js 是客户端 WebGL 可视化的库;不知何故,我无法在 Meteor 中正确引用它。
如果我将 .js 放在 /public 中,Meteor 要么根本找不到它,要么我得到一个错误:
ReferenceError: self 未在 app/Three.js:2:47 中定义
当我将它放在任何其他文件夹中时。
我真的不知道为什么......谢谢!
所有陨石包都不适合我,所以我做了另一种方法。你仍然可以写一个流星包。或者您可以单独使用您的项目结构。在流星文档中,您可以阅读以下内容:
“子目录中的文件在父目录中的文件之前加载,因此最深的子目录中的文件首先加载(在lib之后),根目录中的文件最后加载(除了main.*)。”
所以我所做的是,我在客户端文件夹的最深子目录中创建了一个 lib 文件夹,并将我的 three.js 文件放在那里。在文件的开头,您可以找到全局定义:
var 三 = 三 || {修订:'60'};
之后,您需要将其添加到窗口对象,如下所示:
窗口.三=三;
就是这样。现在您可以使用three.js,如果您需要来自three.js 的其他库,您只需将它们放在比您的three.js 更高的目录中。
(对不起我的英语,我知道这很糟糕)
我遇到了同样的问题。最终我意识到有人已经在 Atmosphere 中打包了 Three.js:
https://atmosphere.meteor.com/package/three.js
只需安装陨石并运行
mrt add three.js
这会将 three.js 包添加到您的项目中。解决了 !
在玩了几天 Meteor 之后,我了解到不必总是为要使用的库提供一个包。我不能说这个解决方案适用于所有事情,但它允许我使用 three.js 而没有任何黑客行为。
将您的three.min.js
文件放入其中并在名为“在您的文件client/compatibility
中”的客户端文件夹中创建一个新文件,输入以下代码:main.js
main.js
Meteor.startup(function() {
// your three code here.
});
还有中提琴!这应该工作得很好。我正在使用three.js r71 和meteor v1.1.0.2