2016-08-26 57 views
0

我在我的节点(sails js)项目上使用webshot将HTML字符串转换为图像,然后将该图像上传到S3存储桶。当我在本地机器上运行它时,它可以正常工作,即生成图像,并且可以将该图像上传到s3存储桶。但是,当我在EC2实例(Ubuntu 16)上运行相同的代码时,它不起作用。它不会创建任何图像,因此不会上传任何内容。Node-webshot - 图像没有在服务器上生成,但相同的代码在本地生成图像

这里是我的代码 -

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 
}); 

回答

4

如此看来,webshot使用phantomjs内部和phantomjs有一个秘密的依赖叫做libfontconfig这是不存在的文件和依赖性部分。

https://github.com/ariya/phantomjs/issues/10904

一旦我安装的依赖性,它开始工作。