Javascript 通过HTML加载D3模块与通过Node Require语句加载D3模块 问题

Javascript 通过HTML加载D3模块与通过Node Require语句加载D3模块 问题,javascript,node.js,d3.js,electron,Javascript,Node.js,D3.js,Electron,根据模块的加载位置,执行以下代码会产生不同的结果 d3.tsv("data.tsv", function(error, data) { if (error) throw error; console.log(data); } 当D3库加载到html文件中时,使用以下脚本标记 <script src="node_modules/d3/build/d3.js" type="text/javascript"></script> 免责声明 这是一个电子应用程序,问题发

根据模块的加载位置,执行以下代码会产生不同的结果

d3.tsv("data.tsv", function(error, data) {
  if (error) throw error;
  console.log(data);
}
当D3库加载到html文件中时,使用以下脚本标记

<script src="node_modules/d3/build/d3.js" type="text/javascript"></script>
免责声明 这是一个电子应用程序,问题发生在渲染过程而不是主过程上。D3被用来组成UI。下面的浏览器安全性介绍了如何通过在本地托管文件(如使用本地web服务器或使用Electron API)轻松解决此问题

问题:
如前所述,D3文档团队解释说,,但这两个导入之间的功能差异是什么,为什么它以一种方式工作而不是另一种方式工作?

D3.tsv
只是
XMLHttpRequest
上的一个包装。请求始终发送到原始请求的同一域。在
node.js
的情况下,应用程序运行在本地,请求试图访问
XMLHttpRequest
的本地主机,但本地主机上没有http服务器。这就是为什么您会得到
Error:connect-econnrefered127.0.0.1:80
有趣的原因,尽管我仍然好奇,如果唯一的区别是如何调用D3库,为什么它会工作,因为在html文件中引用D3库而不是节点
require()
语句。您使用的是哪个node.js版本?我无法纠正你所犯的错误。区别不在于d3库,而在于节点和浏览器如何处理本地主机的
XMLHttpRequest
。我使用的是节点版本
v7.9.0
。浏览器也是chromium,因为这是一个电子应用程序。
d3.tsv
只是
XMLHttpRequest
上的一个包装。请求始终发送到原始请求的同一域。在
node.js
的情况下,应用程序运行在本地,请求试图访问
XMLHttpRequest
的本地主机,但本地主机上没有http服务器。这就是为什么您会得到
Error:connect-econnrefered127.0.0.1:80
有趣的原因,尽管我仍然好奇,如果唯一的区别是如何调用D3库,为什么它会工作,因为在html文件中引用D3库而不是节点
require()
语句。您使用的是哪个node.js版本?我无法纠正你所犯的错误。区别不在于d3库,而在于节点和浏览器如何处理本地主机的
XMLHttpRequest
。我使用的是节点版本
v7.9.0
。浏览器也是chromium,因为这是一款电子应用程序。
let d3 = require('d3');

d3.tsv("data.tsv", function(error, data) {
  if (error) throw error;
  console.log(data);
}