PhantomJS 渲染空图像

PhantomJS rendering empty image

我在使用 PhantomJS 时遇到了一些奇怪的错误。

我有 chart.js 折线图,修改了线条颜色: codepen

Chart.defaults.multicolorLine = Chart.defaults.line;
Chart.controllers.multicolorLine = Chart.controllers.line.extend({
    draw: function(ease) {
        var startIndex = 0;
        var meta = this.getMeta();
        var points = meta.data || [];
        var colors = this.getDataset().colors;
        var area = this.chart.chartArea;
        var originalDatasets = meta.dataset._children.filter(function(data) {
            return !isNaN(data._view.y);
        });

    function _setColor(newColor, meta) {
        meta.dataset._view.borderColor = newColor;
    }

    if (!colors) {
        Chart.controllers.line.prototype.draw.call(this, ease);
        return;
    }

    for (var i = 2; i <= colors.length; i++) {
        if (colors[i-1] !== colors[i]) {
            _setColor(colors[i-1], meta);
            meta.dataset._children = originalDatasets.slice(startIndex, i);
            meta.dataset.draw();
            startIndex = i - 1;
        }
    }

    meta.dataset._children = originalDatasets.slice(startIndex);
    meta.dataset.draw();
    meta.dataset._children = originalDatasets;

    points.forEach(function(point) {
        point.draw(area);
    });
  }
});

在普通浏览器中看起来正常

但是当我尝试使用 PhantomJS 在 PHP 服务器 (Yii2) 上渲染它时:

var webPage = require('webpage');

var page          = webPage.create();
page.viewportSize = {width: 1920, height: 1080};

var url = '%url%';

page.open(url, function (status) {
    if (status === 'success') {
        window.setTimeout(function () {

            page.render('%path%', {format: 'jpeg', quality: '90'});
            phantom.exit();

        }, 3000);
    }
});

返回空图像

有什么想法吗?

解决方案:将 PhantomJS 替换为 puppeteer