Installing/Using Phantom.js with Meteor

前端 未结 2 717
傲寒
傲寒 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:52

    The phantomjs wrapper in atmosphere doesn't look like it produces anything that works.

    But you can easily add npm packages useing the npm meteorite package

    First add the npm package to your project

    mrt add npm
    

    Then add the required phantomjs version to the packages.json file

    {
         "phantomjs": "1.9.7-6"
    }
    

    Then use the following code to require the phantomjs npm module:

    var phantomjs = Meteor.require('phantomjs');
    
    0 讨论(0)
  • 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();
    });
    
    0 讨论(0)
提交回复
热议问题