为什么我得到一个未捕获的 ReferenceError: Plotly is not defined

Ret*_*mer 11 javascript socket.io plotly

Uncaught ReferenceError: Plotly is not defined我的页面加载时出现错误。以下代码位于渲染绘图的 div 元素下方,但在侦听器Plotly.newPlot('myDiv', dataPlot, layout);内的行socket.on上是抛出此错误的位置。

var dataPlot = [{
    x: ['a', 'b', 'c', 'd'],
    y: [0, 0, 0, 0],
    type: 'bar'
}];

var layout = {
    autosize: false,
    width: 500,
    height: 500,
    margin: {
        l: 50,
        r: 50,
        b: 100,
        t: 100,
        pad: 4
    }
};

// Listener, whenever the server emits 'updatechat', this updates the chat body
socket.on('updatechat', function (username, data) {
    $('#conversation').append('<b>'+username + ':</b> ' + data + '<br>');
    if (data ==='a'){
        dataPlot[0]['y'][0]++;
    } else if (data === 'b'){
        dataPlot[0]['y'][1]++;
    } else if (data === 'c'){
        dataPlot[0]['y'][2]++;
    } else if (data === 'd'){
        dataPlot[0]['y'][3]++;
    }
    Plotly.newPlot('myDiv', dataPlot, layout);
});

$("#clearplot").click(function() {
    var dataPlot = [{
    x: ['a', 'b', 'c', 'd'],
    y: [0, 0, 0, 0],
    type: 'bar'
    }]
    Plotly.newPlot('myDiv', dataPlot, layout);
});
Run Code Online (Sandbox Code Playgroud)

我已经包含<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>在我的 HTML5 文档的头部,并且Plotly.newPlot('myDiv', dataPlot, layout);我的clearplot函数内工作得很好。为什么只在updatechat侦听器中有错误?

编辑 我想出了这个问题。问题是这段代码嵌入在一个 Angular 应用程序中,所以我只需要<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>在模板 HTML 文件的头部中包含 ,而不是本地 HTML 文件。

OrA*_*yag 8

看起来您忘记Plotly在代码中包含脚本引用。
尝试添加:
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<head>HTML 页面的部分中。