在Meteor上安装/使用Phantom.js

时间:2014-05-22 16:14:11

标签: meteor phantomjs

我目前正在努力将Phantom.js与我的Meteor应用程序结合使用。我已将它安装在我的本地计算机(Ubuntu 14.04)上,它已添加到我的路径中(我可以从终端运行它),我还运行并安装了Phantomjs的智能包装器:mrt add phantomjs。< / p>

我可以看到在我的.meteor > local > build > programs > server > npm目录中有一个phantomjs目录。

我的问题是,我如何实际使用幻影?我试图从服务器端刮掉东西。我尝试过以下的事情(使用coffeescript): phantom = Npm.require "phantomjs" phantom = Npm.require "phantom" phantom = Meteor.require "phantomjs" phantom = Meteor.require "phantom"

(我也尝试过使用资本&#34; P&#39; s&#34;)

以这种方式进行的所有尝试都会产生:Error: Cannot find module 'phantomjs'

非常感谢任何澄清!

2 个答案:

答案 0 :(得分:4)

[编辑]现在流星正在支持npm包开箱即用:https://guide.meteor.com/using-npm-packages.html#installing-npm


以下是Meteor的程序&gt; 1.0.0

添加npm包

meteor add meteorhacks:npm

运行meteor让npm包预先初始化

meteor

已在根目录创建了一个文件packages.json。将其编辑为:

{
  "phantomjs": "1.9.13"
}

将幻像用于服务器端代码:

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

奖金:一个使用示例(感谢Ben Green),放在代码中的任何位置:

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

创建phantomjs脚本文件./private/phantomDriver.js并将其编辑为

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

答案 1 :(得分:3)

大气中的幻影包装看起来不会产生任何有效的东西。

但您可以轻松添加使用npm meteorite package

的npm包

首先将npm包添加到项目中

mrt add npm

然后将所需的phantomjs版本添加到packages.json文件

{
     "phantomjs": "1.9.7-6"
}

然后使用以下代码来要求phantomjs npm模块:

var phantomjs = Meteor.require('phantomjs');