0

我已经从以下位置安装了 webshot 包和流星 webshot 智能包:https ://github.com/TimHeckel/meteor-webshot

在目录 pacages/webshot/lib/webshot.js 中有 WEBSHOT 对象的定义。在默认的流星应用程序中,我想使用这个对象来获取快照,如上面链接的第二步所示:

Template.hello.events({
'click input' : function () {
  var _image = "myscreenshot.png";
  var _res =  WEBSHOT.snap("http://google.com", "public/exports~/" + _image, {
    screenSize: {
        width: 300
        , height: 300
      }
    });

}

});

当我单击按钮时,出现异常:未捕获的 ReferenceError:未定义 WEBSHOT。

命令:

流星列表

显示 webshot 包,我需要在哪里包含此包才能使其正常工作?

4

3 回答 3

1

Hubert OG 是对的,这个包只是服务器端的。

但是,它已经有 5 个月没有更新了,所以它看起来不像 Meteor 的最新“链接器”是最新的,如果我没记错的话,这是 0.6.5 中出现的一个特性。

您需要 git clone 本地包目录中的包。(您可能需要“流星删除”以前的包并“流星添加”新包)。然后修改 package.js 使其看起来像这样:

Package.on_use(function (api) {
    api.add_files("lib/webshot.js", "server");
    api.export("WEBSHOT","server");
});

从 Meteor 0.6.5 开始,您需要明确指定包中的哪些符号被导出到全局命名空间,因为包代码在闭包内执行。

于 2013-11-03T16:06:30.823 回答
1

WEBSHOT对象仅在服务器端可用。请参阅package.js 中的这一行

要使用它,您需要在服务器上创建一个方法,在其中Meteor.methods使用WEBSHOT,然后从您的事件处理程序中调用此方法。

于 2013-11-02T19:52:17.650 回答
1

我遇到了同样的问题,所以我使用最新版本的 node-webshot 添加了一个新的 Meteor 包装器:https ://atmospherejs.com/bryanmorgan/webshot 。

您应该能够使用以下方法使其工作:

meteor add bryanmorgan:webshot

然后是与 node-webshot 相同的 API:

webshot("http://google.com", "/tmp/google.png", function (err) {
    // screenshot saved to /tmp/google.png
});
于 2015-04-11T18:20:13.917 回答