使用 phantomjs 渲染chart.js会导致 ReferenceError: Can't find variable: Chart

Rendering chart.js using phantomjs results in ReferenceError: Can't find variable: Chart

提问人:Mayuna 提问时间:7/21/2023 更新时间:7/21/2023 访问量:71

问:

我正在尝试使用 phantomjs 渲染chart.js图表。但是,在运行 phantomjs 时,我收到错误 .在浏览器中打开我正在尝试呈现的 HTML 文件不会出现此问题。ReferenceError: Can't find variable: Chart

  • PhantomJS 的脚本文件:
page = require('webpage').create();

page.open('file:///path/to/file.html', function()
{
    page.viewportSize = {
        width: 850,
        height: 300
    };

    page.render('graph.png');

    phantom.exit(0);
});
  • file.html:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div>
    <canvas id="myChart"></canvas>
</div>

<script>
    const ctx = document.getElementById('myChart');

    new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
            datasets: [{
                label: '# of Votes',
                data: [12, 19, 3, 5, 2, 3],
                borderWidth: 1
            }]
        },
        options: {
            scales: {
                y: {
                    beginAtZero: true
                }
            }
        }
    });
</script>

</body>
</html>

我用来运行 PhantomJS 的命令:.我正在使用PhantomJS版本。phantomjs.exe script.js2.1.1

有什么我忘记设置或配置了吗?

JavaScript chart.js PhantomJS 服务器端

评论

0赞 kikon 7/21/2023
您的问题的原因可能是您通过协议获取 html。我会尝试:1)在本地保存并链接到文件,甚至更好 2)通过(本地)网络服务器filechart.jsfile.html
0赞 Mayuna 7/22/2023
尝试在本地链接chart.js并通过 Web 服务器获取file.html,但两者都导致了相同的错误。
1赞 kikon 7/23/2023
的确,我错了;通过测试各种组合,我得出的结论是,过时的 javascript 引擎无法解析 的源文件,该文件至少编译为 es6。例如,一个简单的测试表明,如果存在包含模板字符串的基本脚本,则失败。似乎被接受的最后一个版本是 2.9.4phantom.jschart.jsphantomjschart.jsphantomjs
1赞 Mayuna 7/26/2023
非常感谢您的研究。

答: 暂无答案