我目前正在努力将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'
非常感谢任何澄清!
答案 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');