Installing/Using Phantom.js with Meteor

前端 未结 2 723
傲寒
傲寒 2020-12-17 07:23

I\'m currently struggling with using Phantom.js with a Meteor app of mine. I have it installed on my local machine (Ubuntu 14.04), it\'s added to my path (I can run it from

2条回答
  •  一生所求
    2020-12-17 07:55

    [EDIT] now meteor is supporting npm packages out of the box: https://guide.meteor.com/using-npm-packages.html#installing-npm


    Here is the procedure for Meteor > 1.0.0

    Add the npm package

    meteor add meteorhacks:npm
    

    Run meteor to let the npm package to pre-initialise

    meteor
    

    A file packages.json has been created at the root. Edit it to:

    {
      "phantomjs": "1.9.13"
    }
    

    To use phantom into your server side code:

    var phantomJS = Meteor.npmRequire("phantomjs");
    

    Bonus: an example of usage (thanks Ben Green), put anywhere in your code:

    if (Meteor.isServer) {
        Meteor.startup(function () {
            var phantomjs = Meteor.npmRequire('phantomjs');
    
            var spawn = Meteor.npmRequire('child_process').spawn;
            Meteor.methods({
                runTest: function (options) {
                    command = spawn(phantomjs.path, ['assets/app/phantomDriver.js']);
                    command.stdout.on('data', function (data) {
                        console.log('stdout: ' + data);
                    });
                    command.stderr.on('data', function (data) {
                        console.log('stderr: ' + data);
                    });
                    command.on('exit', function (code) {
                        console.log('child process exited with code ' + code);
                    });
                }
            });
    
            Meteor.call("runTest");// run the test as soon as meteor server starts
        });
    }
    

    Create the phantomjs script file ./private/phantomDriver.js and edit it to

    var page = require('webpage').create();
    page.open('http://github.com/', function (){
        console.log('Page Loaded');
        page.render('github.png');
        phantom.exit();
    });
    

提交回复
热议问题