我已按照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,但我怀疑这是原因。
谷歌搜索错误返回没有任何用处。
有什么想法吗?
答案 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:
apt-get
,我的命令是sudo apt-get remove phantomjs
。wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
从命令行将x86版本的PhantomJS 1.9.7下载到当前工作目录。)tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2
,具体取决于您下载的版本。phantomjs
中/bin
可执行文件的符号链接。
sudo ln -s <snip>/<unpacked_tarball>/bin/phantomjs /usr/local/share/phantomjs
sudo ln -s <snip>/<unpacked_tarball>/bin/phantomjs /usr/local/bin/phantomjs
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
目录。