Javascript C3JS-无法读取属性';类别10';未定义的

Javascript C3JS-无法读取属性';类别10';未定义的,javascript,d3.js,graph,charts,c3.js,Javascript,D3.js,Graph,Charts,C3.js,我从jsfiddle()尝试了这段c3.js代码,但在我的localhost中似乎不起作用 我正在使用uniserver作为我的服务器。我复制粘贴所有东西,但它不起作用 <html> <head> <!-- CSS --> <link href="css/c3.css" rel="stylesheet" type="text/css" /> <!-- JAVASCRIPT -->

我从jsfiddle()尝试了这段c3.js代码,但在我的localhost中似乎不起作用

我正在使用uniserver作为我的服务器。我复制粘贴所有东西,但它不起作用

<html>
    <head>
        <!-- CSS -->
        <link href="css/c3.css" rel="stylesheet" type="text/css" />

        <!-- JAVASCRIPT -->
        <script src="js/d3.min.js" type="text/javascript"></script>
        <script src="js/c3.js" type="text/javascript"></script>

        <script type="text/javascript">
            window.onload=function(){
                var chart = c3.generate({
                    data: {
                        columns: [
                            ['data1', 300, 350, 300, 0, 0, 0],
                            ['data2', 130, 100, 140, 200, 150, 50]
                        ],
                        types: {
                            data1: 'area',
                            data2: 'area-spline'
                        }
                    },
                    axis: {
                        y: {
                            padding: {bottom: 0},
                            min: 0
                        },
                        x: {
                            padding: {left: 0},
                            min: 0,
                            show: false
                        }
                    }

                });
            }
        </script>
    </head>
    <body>
        <div id="chart"></div>
    </body>
</html>

我尝试了不同版本的c3.js,但什么都没有。这很奇怪,因为它在JSFIDLE中工作,而不是在我的本地环境中。

我通过将D3.js v4(4.1.1)降级到v3(3.5.17),解决了另一个项目中完全相同的JavaScript错误

事实证明,截至2016年7月,C3.js:

它肯定不会像[D3.js]4.0那样工作。D3V4有一个完全不同的名称空间,并且绝不向后兼容。更新到v4是一项非常重要的任务


这是因为,C3.js基于D3 v3,当尝试使用D3 v4运行时会出现错误

错误发生在以下代码行:

pattern = notEmpty(config.color_pattern) ?
    config.color_pattern : d3.scale.category10().range()
在D3V4上,
D3.scale.category10().range()
应该用作
D3.scaleOrdinal(D3.schemeCategory10)
,但由于C3.js不能在D3V4上运行,因此仅更改这部分代码是毫无意义的


如果有人需要使用D3 v4+,请尝试


是C3.js的分支项目,与D3 v4+支持有相同的接口。

问题是您使用的C3版本不支持您使用的版本:

D3 ver | requires C3 ver
3.x    |  0.4
4.x    |  0.5
5.x    |  0.6

只要确保您使用的是正确版本的C3,您就不会看到此错误。

尝试为这两个库提供完整的绝对路径。将代码移到正文的末尾也是一个好主意。在进行一些组合之后,结果是d3.js路径不起作用。我试图提供整个localhost路径和C:drive路径,但仍然不起作用。我得到的解决方案是使用外部url()。我不知道它是怎么工作的,但是,是的,它现在工作了。多亏了你的主意。:)值得一提的是,我在另一个项目上解决了完全相同的JS错误,从D3.JS v4(4.1.1)降级到v3(3.5.17)。@ArtoBendiken,嘿,它工作了!谢谢如果可以的话,我会投票支持你的评论。@JJC酷!因为它对你有用,我添加了一个正确的答案,这样其他偶然发现这个问题的人就能够找到答案。你可以在这里得到这个版本吗?谢谢你的回答,这很有帮助。如果你不使用npm,并且正在使用D3的rails gem,那么将此代码添加到gem文件将解决问题。
gem'D3 rails',“~>3.5.17”
噢,这里还有一个链接,指向我在上面的评论中引用的gem版本。c3.js版本重要吗?
D3 ver | requires C3 ver
3.x    |  0.4
4.x    |  0.5
5.x    |  0.6