我在我的节点(sails js)项目上使用webshot将HTML字符串转换为图像,然后将该图像上传到S3存储桶。当我在我的本地机器上运行它,它工作正常,但它生成一个图像,我能够将该图像上传到s3桶。但是当我在EC2实例(Ubuntu 16)上运行相同的代码时,它不起作用。它不会创建任何图像,因此不会上传任何内容。
这是我的代码 -
var htmlString = '<div>a long html string</div>';
webshot(htmlString,'img.png', options, function(err) {
fs.readFile('img.png', function (err, data){
if(err){
console.log('error reading file');
}else{
var params = {
Bucket: bucket,
Key: 'customPNGs/'+'img.png',
Body: data,
ACL: 'public-read',
ContentType: 'image/png'
};
s3.putObject(params, function (err, res) {
if (err) {
sails.log.error("Error uploading data: ", err);
} else {
console.log('uploaded')
}
});
}
});
我尝试使用流直接上传到S3,但它上传了一个0kb的文件。这是我使用流的代码 -
var renderStream = webshot(quitImageHTML, null, options);
var ss = '';
renderStream.on('data', function(data) {
ss+=data.toString('binary');
});
renderStream.on('end', function() {
//upload using the above code
});
答案 0 :(得分:4)
所以似乎webshot
在内部使用phantomjs
而phantomjs
有一个名为libfontconfig
的秘密依赖关系,它在其文档和依赖关系部分中不存在。
https://github.com/ariya/phantomjs/issues/10904
一旦我安装了依赖项,它就开始工作了。