PhantomJS exited with return value 127
问题:
在阿里云的服务器上使用 nodejs webshot 生成图片的文件一直是大小为0的情况。
使用npm安装webshot安装需要的包:
npm install webshot
这个命令会自动安装webshot的以来包, 包括PhantomJS的包。
但是问题来了, 自己的mac电脑没有问题, 自己的虚拟机中的linux运行也是没有问题 的。 但是吧项目部署到阿里云的linux服务器就会出现上面的问题,图片的大小为0的情况。起以为是权限的问题,但是图片是生成了, 只不过大小为0, 排除了权限的问题。
查找问题:
百度, google,各路招式都使用上了, 说是PhantomJS的问题, 那就去看看是不是PhantomJS的问题,(http://phantomjs.org/documentation/)[http://phantomjs.org/documentation/] , 看到这里发现一段代码:
On Debian-based distro (tested on Ubuntu 14.04 and Debian 7.0), run:
sudo apt-get install build-essential g++ flex bison gperf ruby perl \
libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev \
libpng-dev libjpeg-dev python libx11-dev libxext-dev
On Fedora-based distro (tested on CentOS 6), run:
sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \
openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \
libpng-devel libjpeg-devel
尝试解决问题:
阿里云用的是center的服务器, 果断执行地二段代码:
sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \
openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \
libpng-devel libjpeg-devel
测试:
var webshot = require('webshot');
var fs = require('fs');
var renderStream = webshot('http://www.baidu.com');
var file = fs.createWriteStream('baidu.png', {encoding: 'binary'});
renderStream.on('data', function(data) {
console.log(data);
file.write(data.toString('binary'), 'binary');
});
renderStream.on('error', function(err){
console.log(err);
})
webshot('<html><body>Hello World</body></html>', 'hello_world.png', {siteType:'html'}, function(err) {
// screenshot now saved to hello_world.png
console.log(err);
});
renderStream.on('end', function(){
console.log('file is downloaded');
})
发现文件出现了, 而且大小正常。
drwxrwxrwx 3 root root 4096 3月 5 13:07 .
drwxr-xr-x 6 root root 4096 3月 5 11:53 ..
-rw-r--r-- 1 root root 19109 3月 5 13:04 baidu.png //正常文件
-rw-r--r-- 1 root root 15177 3月 5 13:04 hello_world.png //正常文件
-rwxrwxrwx 1 root root 613 3月 5 12:33 index.js
drwxrwxrwx 92 root root 4096 3月 5 12:38 node_modules
-rwxrwxrwx 1 root root 258 3月 5 11:55 package.json
-rwxrwxrwx 1 root root 25310 3月 5 11:55 package-lock.json
最后解决问题
作为程序员出现问题不可怕,问题是怕貌似没有问题,但是问题就是有找不到。