执行以下代码会产生不同的结果,具体取决于模块的加载位置。
d3.tsv("data.tsv", function(error, data) {
if (error) throw error;
console.log(data);
}
在html文件中加载D3库时,使用以下脚本标记
<script src="node_modules/d3/build/d3.js" type="text/javascript"></script>
以上示例中的文件data.tsv
中的数据按预期导入变量data
。
从节点终端(REPL)或脚本导入库时,如下所示,data
的内容最终成为三个对象数组,其中所有对象都包含Error: connect ECONNREFUSED 127.0.0.1:80
。
let d3 = require('d3');
d3.tsv("data.tsv", function(error, data) {
if (error) throw error;
console.log(data);
}
这是一个Electron应用程序,问题出现在渲染过程而不是主要过程。 D3用于组织UI。下面的浏览器安全性write up解释了如何通过在本地托管文件(如使用本地Web服务器或使用Electron API到access local files)轻松解决此问题。
如上所述,D3文档团队解释了browser security limits file access ,但这两个导入之间的功能差异是什么?为什么它以单向而不是另一种方式工作?