Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3 tip和NPM:;TypeError:m.tip不是一个函数;_Javascript_D3.js_Npm_Tooltip - Fatal编程技术网

Javascript D3 tip和NPM:;TypeError:m.tip不是一个函数;

Javascript D3 tip和NPM:;TypeError:m.tip不是一个函数;,javascript,d3.js,npm,tooltip,Javascript,D3.js,Npm,Tooltip,我正在围绕D3编写React包装,在尝试使用D3 tip时出错:TypeError:m.tip不是函数 我在d3 tip GitHub上也看到过类似的帖子,但在我的案例中都不起作用。我已经使用NPM安装了D34.12.2和D3 tip 0.7.1,因此这些链接中提到的版本问题不应适用 相关代码如下所示: import * as d3 from 'd3'; import * as d3Tip from 'd3-tip'; svg = d3.select('#' + divId)

我正在围绕D3编写React包装,在尝试使用D3 tip时出错:
TypeError:m.tip不是函数

我在d3 tip GitHub上也看到过类似的帖子,但在我的案例中都不起作用。我已经使用NPM安装了D34.12.2和D3 tip 0.7.1,因此这些链接中提到的版本问题不应适用

相关代码如下所示:

import * as d3 from 'd3';
import * as d3Tip from 'd3-tip';

svg = d3.select('#' + divId)
                    .append('svg')
                    .attr('width', width)
                    .attr('height', height);

g_node = svg.append('g')
                    .attr('id', 'g_node');

var node_circles = g_node.selectAll('circle')
                                .data(dataset, function(d) { return d.name; });

var tool_tip = d3Tip.tip()
        .attr('class', 'd3-tip')
        .offset([-8, 0]);

svg.call(tool_tip);

node_circles.enter()
                .append('circle')
                .attr('cx', function(d) { return projection(d.pos)[0]; })
                .attr('cy', function(d) { return projection(d.pos)[1]; })
                .attr('r', '' + NODE_RADIUS + 'px')
                .attr('fill', 'blue')
                .on('mouseover', function(d) {
                    tool_tip.show(d);
                })
                .on('mouseout', function(d) {
                    tool_tip.hide(d);
                });

有什么办法解决这个问题吗?

为了让它正常工作,我会调整一些东西

比如说,

别名导入可以简单到
从“d3 tip”导入d3Tip

d3Tip是从d3 tip repo中的索引文件返回的默认函数的别名

接下来,调用d3Tip以获取
tip
对象,例如,调用
d3Tip()
以获取您正在使用的
var工具提示


现在,您有了一个tip对象,不需要再调用
.tip()
:)

您试过调试它吗?例如,
console.log(d3Tip)
,查看d3Tip是什么?从“d3Tip”导入d3Tip会导致ts]Module'/home/tomasz/work/ANGULAR/d3/d3_DEMO/node_modules/@types/d3Tip/index''没有默认导出。听起来像是导入问题;尝试在导入类周围使用{},以防它不是默认导出。如果它不起作用,看看源代码中的导出。我使用了这个,它起作用了。不过我还是用了
d3tip=require('d3-tip')
然后根据需要使用d3tip。