node-canvas在Node中工作,但在PhantomJS中需要时会失败

我有一个PhantomJS应用程序,我想从JS驱动页面(通过page.renderBase64('PNG') )获取一系列截图,然后将这些截图page.renderBase64('PNG')到GIF中。

据我所知,Node中没有办法用纯的base64string来构buildGIF,我真的不想把每一帧写到磁盘上,然后到Node外面用ImageMagick或类似的东西把它们缝在一起这会大大减缓这个过程。 所以我的计划是将base64图像绘制到canvas上,然后将canvas添加到Node GIF生成器。

虽然我可以在节点环境中使用node-canvas ,但是在我的Phantom脚本中包含require('canvas')时,当我启动一个新的Canvas对象时,吐出了缺less依赖关系时常见的错误:

 Error: Cannot find module './lib/node-canvas/build/Release/canvas' phantomjs://platform/bootstrap.js:299 in require phantomjs://platform/bootstrap.js:263 in require 

我想,问题的一部分就是Phantom正在不同的环境中运行Node,而不是所有的依赖都不存在。 但是我不太了解Node和PhantomJS在执行Javascript方面的不同。 我不清楚什么是phantomjs://platform/bootstrap.js是否是我可以扩展的东西。

为了清楚起见,我正在使用Phantom-Node桥,在那里我用var page = require('webpage').create(); 。 然后我使用phantomjs从命令行执行脚本。

TL; DR:从PhantomJS脚本中需要基于C ++的Node模块node-canvas,它会失败,从Node运行时不会失败。 环境如何不同? 为什么一些Node模块工作而其他模块却不工作?

更新:我知道我可以在由Phantom渲染的页面上创build一个<canvas>元素并使用它,但是这需要在页面的沙箱化JS和页面之间来回耗费大量时间脚本本身。