PhantomJS has crashed. Please read the bug reporting guide at…
服务器环境centos
解决方法
先上我这边的问题原因,字体问题,在服务器安装需要的字体,问题即得到解决。
我的排查过程
在测试环境和我本机都没有问题,但在线上就崩溃了,这个问题一时也让我有点崩溃,几乎检查了所有代码相关的问题,没有发现任何异常,那么问题只能出在工具或服务器环境上了。
一、找错误日志
我希望能从phantomjs的日志上去发现问题所在,但无奈没找到phantomjs的关键日志。
二、从待转换文件上找问题
看不了错误日志,那么只能用最笨的方法从html本身去一行行排查了,先将html全部注释掉,再转换,如此重复,差不多就如下面的代码过程:
for(i=0;i<html最大行数){
if(phantomjs崩溃){
print(“定位到问题所在!”)
}
else{
do something //继续放开html内容
i=i+放开行数
}
}
功夫不负有心人,最终定位到某些加了样式的代码会导致崩溃,然后检查了下样式,发现其中有一行是字体样式
,如果把字体样式去掉就不会崩溃,问题定位到了,剩下的就是解决问题了。
字体环境
我这边的情况是缺少arial
字体,使用windows开发的同学可以参考:在CentOS中安装arial字体。
使用macos的同学,原理和windows的差不多,去字体册里找到相应字体,然后在访达中显示,再把它copy一份到服务器的/usr/share/fonts/arial
(建个arial目录)
结语
好了,这次问题的解决过程大致如此,在找phantomjs日志花的时间其实比一行行去注释html花得时间还要多,一是自己对phantomjs比较陌生,二是这个工具的生态环境也不确实比较差(快5年在github上没有更新)。所以与其去完全陌生的环境找解决方案,不如从自己相对熟悉的地方去发散找解决方法,花点笨功夫,可能问题还能更快得到解决。