c3.生成不抛出错误

c3.generate not throwing error

本文关键字:出错 错误 c3      更新时间:2023-09-26

我正在使用c3 + d3 + javascript在网页中创建折线图。我设法创建了一个在本地运行良好的代码,但是当我将其上传到我的服务器时,代码停止了工作。我在下面解释这个问题:

问题:c3.generate 上传到服务器时未引发错误

JSFiddle: http://jsfiddle.net/xq6wmyvp/10/

var chart;
function initialize(path) {
    try {
        c3.generate({
            bindto: '#chart',
            data: {
                x: 'label',
                url: path,
                type: 'line',
            },
            axis: {
                x: {
                    type: 'categories',
                    label: {
                        text: 'days',
                    },
                },
                y: {
                    label: {
                        text: 'yield',
                    },
                    tick: {
                        format: d3.format(".2%")
                    }
                }
            },
        });
    } catch (err) {
        return false;
    }
    return true;
}
var path1 = 'https://gist.githubusercontent.com/SamMorrowDrums/f571240047c0344a4af8/raw/433eae455570b64edcdc7ece39416b468b612f49/test.csv';
alert(initialize('blabla'));
代码

解释:代码(在小提琴中)有一个函数,可以使用一些数据用折线图初始化图表。数据的路径作为该函数的变量给出(称为"初始化(路径)")。此函数使用 c3.generate 来创建图形。如果数据不可用或不存在,c3.generate 会抛出错误(这在本地有效,但在上传到服务器时不起作用 - 这就是问题所在),函数(初始化)返回 false。如果数据存在,则加载图形并返回 true。

问题重述:将代码上传到服务器后,函数"initialize(path)"仅返回"true",即使数据不可用/不存在。

我不知道如何解决这个问题。你可以帮我吗?感谢您的阅读!

(Github链接到问题:https://github.com/masayuki0812/c3/issues/960)

正如我在评论中所说,在引擎盖下,c3 正在使用 d3.xhr 来检索数据。这是一个异步调用,这意味着它位于您的 try 块之外。

可能的解决方法包括:

1.) 在 c3 源代码中修复它 在第 1903 行,您会看到错误正在被删除。

2.) 创建全局错误处理程序

3.) 不要使用 C3 的 URL 选项。 发出您自己的 d3 xhr 请求(以正确的方式处理错误),如果成功,则使用 columns 选项调用 c3.generated 。 这就是我的做法。

d3.csv("path/to/file.csv", function(error, json) {
  if (error){
      // handle error properly
      return;
  }
  c3.generate({
    ...
  });
});
相关文章: