Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 如何在node.js中正确导入d3库?_Javascript_Node.js_D3.js - Fatal编程技术网

Javascript 如何在node.js中正确导入d3库?

Javascript 如何在node.js中正确导入d3库?,javascript,node.js,d3.js,Javascript,Node.js,D3.js,我正在与d3一起工作,以便可视化力定向图 我使用cdn文件启动了我的项目。但我发现了一个问题,如果我使用此代码: …像d3.forceSimulation这样的函数不可用,至少它会抛出一个错误。所以我把url改成了这个: …根据这个例子 但新的问题出现了:未捕获的TypeError:无法读取null的属性“append”,也就是svg 我尝试使用npm安装d3。所以我导入了d3: 但是,我不知道如何将svg附加到div 这是发生错误时我的代码: graphic/index.js index.js

我正在与d3一起工作,以便可视化力定向图

我使用cdn文件启动了我的项目。但我发现了一个问题,如果我使用此代码:

…像d3.forceSimulation这样的函数不可用,至少它会抛出一个错误。所以我把url改成了这个:

…根据这个例子

但新的问题出现了:未捕获的TypeError:无法读取null的属性“append”,也就是svg

我尝试使用npm安装d3。所以我导入了d3:

但是,我不知道如何将svg附加到div

这是发生错误时我的代码:

graphic/index.js

index.js

如何正确导入d3库。我尝试了这些选择,但没有任何结果。我做错了什么

编辑1

我从html中删除了所有d3脚本

我在我的viz文件中添加了以下内容:

const d3 = require('d3')
const d3SelectionMulti = require('d3-selection-multi')
我还尝试:

import * as d3 from 'd3'
import 'd3-selection-multi'
根据文档,我使用了.attrs代替.attr:


这是它在这些更改后抛出的错误:uncaughttypeerror:d3.select…append…attrs不是函数。d3.js v4对api进行了破坏性更改。你在炼狱里。你需要放开v3,拥抱v4

d3.forceSimulation等功能不可用

因为您试图使用v3中不存在的v4函数

但新的问题出现了:未捕获的TypeError:无法读取属性 null的“append”,即svg

很可能是因为您试图对对象使用attr,v4不支持开箱即用

你需要


您的import语句是正确的。

您是否使用插件只需一个.attr{}调用就可以分配属性?如果执行此操作后svg为空,则可能与问题有关。尝试控制台日志svg,在开始let circle=..的行之前可能没有定义。。。。如果你注释掉.attr{…}行,它还没有定义吗?@anbnyc我没有使用任何插件。如果我注释attr{…},svg现在是define。。你会向我推荐什么插件?感谢您的帮助,但是如果没有这么多的库,我如何使用这些库?在节点中是否有使用require的选项?我认为您只需要导入“d3选择多个”;在导入d3之后。它应该修改d3原型。谢谢。我会四处看看。我不知道为什么它不起作用。我用最近的例子编辑了这个问题。再次感谢!
const graph = require('./graphic')
let w = document.getElementById('Gforce').offsetWidth
let h = document.getElementById('Gforce').offsetHeight
graph(w, h)
const d3 = require('d3')
const d3SelectionMulti = require('d3-selection-multi')
import * as d3 from 'd3'
import 'd3-selection-multi'