linux PhantomJS 错误分析 PhantomJS exited with return value 127

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:

1
2
3
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:

1
2
3
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的服务器, 果断执行地二段代码:

1
2
3
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

测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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');
})

发现文件出现了, 而且大小正常。

1
2
3
4
5
6
7
8
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

最后解决问题

作为程序员出现问题不可怕,问题是怕貌似没有问题,但是问题就是有找不到。

坚持原创技术分享,您的支持将鼓励我继续创作!
//