无法在Rails应用程序中连接PhantomJS和Poltergeist

时间:2013-09-16 10:36:05

标签: ruby-on-rails capybara phantomjs poltergeist

我已按照Poltergeist github页面上的说明操作,但我一直收到错误消息,说明我的PhantomJS版本错误。

具体来说,它说:

Could not find an executable 'phantomjs' that matched the requirements '~> 1.8', '>= 1.8.1'. Found versions were {"/home/marko/projects/irs_machine/bin/phantomjs"=>"50"}.

现在,我已经下载了phantomjs v1.8.1(以及后来的v1.9.2),因此版本是正确的。这真让我疯狂。我使用Ubuntu 13.04,但我怀疑这是原因。

谷歌搜索错误返回没有任何用处。

有什么想法吗?

4 个答案:

答案 0 :(得分:9)

我已经解决了!

我发现非常奇怪的是,错误报告了phantomjs版本为“50”,这是不可能的。

我已将错误跟踪到“cliver”gem,这是一个检测已安装程序版本的gem。它通过正则表达式匹配所需的版本字符串到

的结果
 {command} -v

现在,当我运行phantomjs -v时,我得到“1.8.1”,那么发生了什么?仔细观察“1.8.1”并不是我回来的全部!确切地说,我得到了这个:

 phantomjs -v
 Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.
 1.8.1

我遇到了一个fontconf错误,果然,它包含的第一个数字是“50”。 Cliver与标准输出匹配,因此无法获得正确的版本,因为系统正在编写错误。

一旦我重新配置50-user.conf不使用第9行,错误就消失了,并且poltergeist开始按预期工作。

答案 1 :(得分:1)

在我的情况下,使用apt-get安装PhantomJS是安装较旧版本的PhantomJS。我必须通过下载tarball,解压缩并在/bin中创建指向可执行文件的链接来手动安装PhantomJS:

  1. 如果您还没有,请删除已安装的PhantomJS的过期版本。
    使用apt-get,我的命令是sudo apt-get remove phantomjs
  2. http://phantomjs.org/download.html下载tarball (例如,您可以使用wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2从命令行将x86版本的PhantomJS 1.9.7下载到当前工作目录。)
  3. 将tarball解压缩到您的主目录中 根据{{​​3}},命令为tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2,具体取决于您下载的版本。
  4. 创建phantomjs/bin可执行文件的符号链接。
    • 关注https://askubuntu.com/a/25962/168631,我跑了:
      1. sudo ln -s <snip>/<unpacked_tarball>/bin/phantomjs /usr/local/share/phantomjs
      2. sudo ln -s <snip>/<unpacked_tarball>/bin/phantomjs /usr/local/bin/phantomjs
      3. sudo ln -s <snip>/<unpacked_tarball>/bin/phantomjs /usr/bin/phantomjs

答案 2 :(得分:1)

我也遇到了同样的问题并通过使用phantomjs gem来解决它,它将根据您正在使用的平台安装phantomjs。

首先删除平台特定的phantomjs,所以如果你使用的是ubuntu sudo apt-get --purge remove phantomjs sudo rm /usr/bin/phantomjs sudo ln -s /node_modules/phantomjs/lib/phantom/bin/phantomjs /usr/bin/phantomjs

答案 3 :(得分:0)

尝试将phantomjs移动到/bin目录。