meteor-webshot ne fonctionne pas pour prendre une capture d’écran et l’enregistrer sur le serveur

Sur le serveur, je voudrais prendre une capture d’écran d’un lien externe et l’enregistrer sur le serveur dans un dossier.

J’essaie d’utiliser le package webshot pour meteor:

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

Mais ça ne fonctionne pas. J’ai installé le paquet en utilisant mrt add webshot. Le paquet a été installé avec succès. Selon ce stackoverflow: comment utiliser webshot avec meteor

J’ai été en mesure de modifier le fichier package.js pour WebShot afin d’exporter WEBSHOT côté serveur variable de la manière suivante:

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

C’est le code que j’appelle côté serveur pour prendre la capture Web:

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

J’ai un répertoire dans le dossier public appelé exports ~ et lorsque je lance mon code, aucune image n’est enregistrée dans le répertoire et je ne reçois aucune erreur. Je n’ai aucune idée de ce qui se passe!

Depuis que j’ai configuré mon meteor pour pouvoir installer les paquets npm côté serveur, j’ai également essayé d’utiliser le paquet npm webshot en l’installant à l’aide de l’ancien logiciel d’installation classique de npm.

Ensuite, j’ai essayé d’utiliser webshot = Meteor.require (“webshot”), mais cela n’a jamais fonctionné car je ne pouvais pas démarrer l’application car elle continuait de tomber en panne avec les erreurs suivantes:

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

Donc, je ne peux pas utiliser webshot le npm normal en utilisant Meteor.require. Mais je l’ai enfin réussi à utiliser le paquet meteor intelligent à condition d’append

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

dans le fichier package.js pour Webshot. Mais toujours il ne prend pas réellement la capture d’écran. S’il vous plaît, quelqu’un m’indique!

J’ai tracé votre question à partir de la page meteor-phantomjs git-hub. J’ai le même problème avec vous, utiliser meteor-phantomjs et maintenant je me rends compte que nous devons inclure des fantômes directement dans le projet, parce que meteor-phantomjs vient juste d’envelopper un chemin d’environnement et même qu’il utilise le paquetage fantôme. (Je ne connais pas les différences)

Donc, j’essaie d’utiliser phantomjs directement et voici la séquence.

1.installez phantomjs sur le serveur 2.ajoutez la version exacte du package phantomjs npm au fichier packages.json dans le projet Meteor 3. utilisez Meteor.require (‘phantomjs’) sur la source Meteor

Mais il y a aussi un autre problème, car le paquet de noeud phantomjs npm semble ne faire qu’exécuter le fichier phantom-script.js sur le processus_enfant et c’est tout! Je pense donc que nous devons exécuter et contrôler les données comme nous le souhaitions.

Il y a peut-être des malentendus parce que je suis un novice dans Node & Meteor, mais j’espère que cela pourrait être utile. Merci.

J’ai eu le même problème, alors j’ai ajouté un nouvel wrapper Meteor ( https://atmospherejs.com/bryanmorgan/webshot ) utilisant la dernière version de node-webshot (0.15.4).

 meteor add bryanmorgan:webshot 

Et la même API que node-webshot:

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