2013-11-02 37 views
0

我已經安裝webshot包和流星webshot智能包從:https://github.com/TimHeckel/meteor-webshot如何使用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。

命令:

meteor list

顯示webshot包,我在哪裏需要包括這個包得到這個工作?

回答

1

WEBSHOT對象僅在服務器端可用。見this line in package.js

要使用它,您需要在服務器上創建一個方法,使用Meteor.methods,在其中使用WEBSHOT,然後從您的事件處理程序中調用此方法。

+1

當我打電話WEBSHOT從Meteor.methods(這樣定義的https ://gist.github.com/anonymous/2387816)我調用方法'test'時有Internal:Exception ReferenceError:未定義WEBSHOT。看起來仍然缺少某事。 – mingle

1

Hubert OG是對的,這個包只在服務器端。

但是,它還沒有在5個月內更新,所以它看起來不是最新的流星的「鏈接器」,如果我記得好的話,它是一個出現在0.6.5中的功能。

您需要在本地軟件包目錄中克隆軟件包。 (你可能需要「流星清除」前一個包和「流星添加」新的一個)。 然後修改package.js,使它看起來像這樣:

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

從流星0.6.5,你需要明確指定哪些符號從包裝遠銷全局命名空間,因爲內部執行的封裝代碼封閉。

+0

Thx回答。我發現這篇文章有用http://meteorhacks.com/complete-npm-integration-for-meteor.html ,它的工作原理是這樣的,我想你的解釋也很好。 – mingle

+0

你有沒有獲得Webshot實際上保存圖像到服務器?我一直在嘗試,它識別WEBSHOT變量和.snap函數,但沒有任何反應!它實際上並沒有將圖像保存到指定的文件夾中。這裏是我發佈我的問題的地方:http:// stackoverflow。com/questions/24441963/meteor-webshot-is-not-working-to-take-a-screenshot-and-save-on-the-server讓我知道如何讓它工作,如果meteor-webshot適合你 – nearpoint

1

我有同樣的問題,所以我添加了一個新的流星包裝使用最新版本的node-webshot:https://atmospherejs.com/bryanmorgan/webshot

你應該能夠得到它的工作使用:

meteor add bryanmorgan:webshot 

然後相同的API節點webshot:

webshot("http://google.com", "/tmp/google.png", function (err) { 
    // screenshot saved to /tmp/google.png 
});