d3未定义,但它适用于浏览器控制台

时间:2017-12-01 00:40:19

标签: html node.js d3.js

我正在使用node.js并尝试使用d3.js模块,但它表示在页面加载时没有定义它。但是,在浏览器控制台中我可以访问d3功能,所以我很困惑。

Chrome,Firefox和Safari都会发生这种情况。

后端的链接如下所示:

app.use('/js', express.static(__dirname + 'public/scripts'));

html(尝试了页面的顶部和底部):

<script src='/js/d3.min.js'></script>

In-html脚本:

<script type="text/javascript">

        var width = 700;
        var height = 580;
        var svg = d3.select("body")
            .append('svg')
            .attr('width', width)
            .attr('height', height);
 </script>

当呼叫d3时,控制台记录:blank.html:394 Uncaught ReferenceError: d3 is not defined

But d3 works in the console.

这是一个错误吗?或者有什么我想念的东西?

1 个答案:

答案 0 :(得分:0)

愚蠢的错误。当我尝试更改<script src='/js/d3.min.js'></script>的位置时,我把它放在这里:

<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script>

<![endif]-->

所以,现在就是这样,它的确有效:

<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script>