1

我正在尝试使用 Meteor 和 Three.js 构建一个应用程序,但不幸的是,将这两个部分绑定在一起非常不成功。

Three.js 是客户端 WebGL 可视化的库;不知何故,我无法在 Meteor 中正确引用它。

如果我将 .js 放在 /public 中,Meteor 要么根本找不到它,要么我得到一个错误:

ReferenceError: self 未在 app/Three.js:2:47 中定义

当我将它放在任何其他文件夹中时。

我真的不知道为什么......谢谢!

4

4 回答 4

1

我认为您需要创建一个流星包。我建议您查看这些问题及其提供的链接。

创建一个流星 d3 包

如何构建 Meteor 包

于 2012-11-21T20:53:29.047 回答
1

所有陨石包都不适合我,所以我做了另一种方法。你仍然可以写一个流星包。或者您可以单独使用您的项目结构。在流星文档中,您可以阅读以下内容:

“子目录中的文件在父目录中的文件之前加载,因此最深的子目录中的文件首先加载(在lib之后),根目录中的文件最后加载(除了main.*)。”

所以我所做的是,我在客户端文件夹的最深子目录中创建了一个 lib 文件夹,并将我的 three.js 文件放在那里。在文件的开头,您可以找到全局定义:

var 三 = 三 || {修订:'60'};

之后,您需要将其添加到窗口对象,如下所示:

窗口.三=三;

就是这样。现在您可以使用three.js,如果您需要来自three.js 的其他库,您只需将它们放在比您的three.js 更高的目录中。

(对不起我的英语,我知道这很糟糕)

于 2013-08-19T19:02:55.513 回答
0

我遇到了同样的问题。最终我意识到有人已经在 Atmosphere 中打包了 Three.js:

https://atmosphere.meteor.com/package/three.js

只需安装陨石并运行

mrt add three.js

这会将 three.js 包添加到您的项目中。解决了 !

于 2013-11-08T07:38:31.063 回答
0

在玩了几天 Meteor 之后,我了解到不必总是为要使用的库提供一个包。我不能说这个解决方案适用于所有事情,但它允许我使用 three.js 而没有任何黑客行为。

将您的three.min.js文件放入其中并在名为“在您的文件client/compatibility中”的客户端文件夹中创建一个新文件,输入以下代码:main.jsmain.js

Meteor.startup(function() {
    // your three code here.
});

还有中提琴!这应该工作得很好。我正在使用three.js r71 和meteor v1.1.0.2

于 2015-06-12T06:03:44.690 回答