【问题标题】:export 'time' (imported as 'd3') was not found in 'd3'在“d3”中找不到导出“时间”(导入为“d3”)
【发布时间】:2018-03-04 18:49:02
【问题描述】:

我是使用 D3 和 React 的新手。我的反应应用程序是由 create-react-app 创建的。 在我的反应组件中,我使用 import * as d3 from 'd3' 导入 d3

我的代码如下:

    this.xScale = d3.time.scale()
        .domain(d3.extent(this.props.data, function (d) {
            return d[_self.props.xData];
         }))
    .rangeRound([0, this.w]);

    this.yScale = d3.scale.linear()
        .domain([0,d3.max(this.props.data,function(d){
            return d[_self.props.yData]+_self.props.yMaxBuffer;
        })])
        .range([this.h, 0]);

    this.area = d3.svg.area()
        .x(function (d) {
            return this.xScale(d[_self.props.xData]);
        })
        .y0(this.h)
        .y1(function (d) {
            return this.yScale(d[_self.props.yData]);
        }).interpolate(this.props.interpolations);

得到编译错误:

在“d3”中找不到导出“时间”(导入为“d3”)

我在我的项目目录下使用npm install d3 --save 导入d3。

任何人有想法有什么问题?

【问题讨论】:

  • 该代码使用的是 D3 v3。您正在导入 D3 v4。
  • @bennygenel 我遇到同样的错误如何解决?

标签: reactjs d3.js


【解决方案1】:

您使用的是 D3 v4。下面的这个链接是您将旧版本转换为您现在使用的解决方案,应该是直截了当的。

https://github.com/d3/d3/blob/master/CHANGES.md

【讨论】:

    【解决方案2】:

    使用 d3.timeScale() 代替 d3.time.scale()

    第 4 版中更改了 D3.js 语法,因此不再使用 d3.time。

    您要么需要导入 d3.js 版本 3

    npm install d3@3

    或更改您的代码以使用 d3.js 版本 4 语法

    d3.timeScale();

    【讨论】:

    • 现在应该是d3.scaleTime()
    【解决方案3】:

    从版本 4 开始,您必须使用 d3.scaleTime()

    【讨论】:

    • 这是一个非常简洁的答案。我不太明白,您介意再详细一点,了解实际问题是什么吗?
    • 这只是对 NicoWheat 答案的一点修正
    • 这类事情最好留作对另一个答案的评论。否则没有真正的方法可以知道它是链接的。
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多