How to use webshot with meteor

2019-09-05 05:37发布

I've installed webshot package and meteor webshot smart package from: https://github.com/TimHeckel/meteor-webshot

In the directory pacages/webshot/lib/webshot.js there is definition of WEBSHOT object. In the default meteor application I want to use this object to get the snapshot as show in the second step from the link above:

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
      }
    });

}

});

When I click on the button I have an exception: Uncaught ReferenceError: WEBSHOT is not defined.

Command:

meteor list

show webshot package, where do I need to include this package to get this working?

3条回答
女痞
2楼-- · 2019-09-05 05:57

Hubert OG is right, this package is server-side only.

However, it hasn't been updated in 5 months, so it looks like it's not up to date with the latest "linker" of Meteor which is a feature that appeared in 0.6.5 if I remember well.

You need to git clone the package in your local packages directory. (you may need to "meteor remove" the previous package and "meteor add" the new one). Then modify package.js so that it looks like this :

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

From Meteor 0.6.5, you need to explicitly specify which symbols from the package are exported to the global namespace, because the package code is executed inside a closure.

查看更多
我只想做你的唯一
3楼-- · 2019-09-05 05:58

I had the same problem so I added a new Meteor wrapper using the latest version of node-webshot: https://atmospherejs.com/bryanmorgan/webshot.

You should be able to get it working using:

meteor add bryanmorgan:webshot

And then the same API as node-webshot:

webshot("http://google.com", "/tmp/google.png", function (err) {
    // screenshot saved to /tmp/google.png
});
查看更多
看我几分像从前
4楼-- · 2019-09-05 06:04

The WEBSHOT object is available only on the server side. See this line in package.js.

To use it, you need to create a method on the server with Meteor.methods, use WEBSHOT inside it and then call this method from your event handler.

查看更多
登录 后发表回答