在服务器上,我想截取外部链接的屏幕截图并将其保存到服务器的文件夹中。

我正在尝试将包webshot用于流星:

https://github.com/TimHeckel/meteor-webshot

但这是行不通的。我使用mrt add webshot安装了软件包。软件包安装成功。根据此stackoverflow:How to use webshot with meteor

我能够编辑webshot的package.js文件,以导出WEBSHOT变量服务器端,如下所示:

Package.on_use(function (api) {
    api.add_files("lib/webshot.js", "server");
    api.export("WEBSHOT","server"); // This was the new line added to export WEBSHOT
});


这是我调用服务器端获取网络快照的代码:

Meteor.methods
  post: (postAttributes) ->
    console.log postAttributes.url // 'http://yahoo.com'
    _image = "myscreenshot.png";
    _res = WEBSHOT.snap(postAttributes.url, "public/exports~/" + _image,
      screenSize:
        width: 300
        height: 300
    )


我在公用文件夹中有一个名为exports〜的目录,当我运行代码时,没有图像保存到该目录中,并且没有任何错误。我不知道发生了什么!

由于已将流星设置为能够在服务器端安装npm软件包,因此我还尝试通过使用常规的旧npm install webshot安装来使用npm webshot软件包。

然后,我尝试使用webshot = Meteor.require('webshot'),但由于我无法启动该应用程序,因为它不断崩溃并出现以下错误,因此它从未起作用:

node_modules/webshot/node_modules/phantomjs/node_modules/request/node_modules/node-uuid/test/test.html:1: bad formatting in HTML template........


所以我不能使用Meteor.require使用webshot常规的npm。但是只要我添加了流星智能程序包,我终于让它工作了

api.export("WEBSHOT","server");


到用于webshot的package.js文件。但是,它实际上并没有拍摄屏幕截图。请有人给我提示!

最佳答案

我已经从meteor-phantomjs git-hub页面中找到了您的问题。
使用meteor-phantomjs时,我也遇到了同样的问题,现在我意识到我们需要将幻像直接包含到项目中,因为meteor-phantomjs仅包装环境路径,甚至使用phantomjs-sun包。 (我不知道区别)

所以我试图直接使用phantomjs,这是序列。

1.将phantomjs安装到服务器
2.将确切的phantomjs npm软件包版本添加到Meteor项目中的packages.json文件中
3.在Meteor源代码上使用Meteor.require('phantomjs')

但是还有另一个问题
因为节点phantomjs npm软件包似乎只在child_process上执行phantom-script.js文件,仅此而已!
因此,我认为我们必须根据需要执行和控制数据。

可能会有一些误解,因为我是Node&Meteor的新手,
但我希望这会有所帮助。
谢谢。

09-25 17:37