将nodejs/express应用程序中的json文件加载到d3中
我有一个快速应用程序,我想从文件夹public
将json-data加载到d3(版本4)中。将nodejs/express应用程序中的json文件加载到d3中
我的文件夹结构如下所示:
public
|-myData.json
view
|-index.jade
app.js
我想与D3加载JSON数据:
{
{
"name": "Maria",
"age": 30
}, {
"name": "Fred",
"age": 50
}, {
"name": "Francis",
"age": 12
}
}
这是我index.jade文件:
extends layout
block content
script(src='javascripts/jquery-3.1.1.min.js')
script(src='javascripts/d3.min.js')
script.
$(document).ready(function() {
d3.json("myData.json", function(data) {
console.log("d ", data);
});
});
在app.js中,我说我想提供静态文件:
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static('public'));
在它总是说控制台:d null
更新: 我现在改变了路径
"d3.json("../myData.json", function(data)"
展望网络选项卡上,我可以看到它加载的文件成功。但在控制台它仍然会打印“null
”
更新2: 这是因为我的JSON - 数据无效。 ^^
{
"content": [
{
"name": "Maria",
"age": 30
}, {
"name": "Fred",
"age": 50
}, {
"name": "Francis",
"age": 12
}
]
}
确保您指向public
文件夹中的d3.json
的第一个参数就到表达的是静态托管的文件。
...
d3.json("../myData.json", function(data) {
console.log("d ", data);
});
});
更新:修改了解决目录参考的答案。另外请确保myData.json
是一个有效的json文件! :)
我也试过。但事实并非如此。如果我这样做,它会在控制台中说:“d3.min.js:6 GET http:// localhost:3000/public/myData.json 404” – thadeuszlay
啊,也许是这行'app.use(express .static(path.join(__ dirname,'public'))); (express.static('public'));' 尝试将其更改为'app.use(express.static(path.join(__ dirname,'public'),{index:'index.jade'}} ));' – Oberon
没有。在它已经调用index.jade之前。所以,它也可以在之前找到它。它也可以加载json文件。但不知何故d3没有注意到它。 :/ – thadeuszlay
你在网络标签中看到什么? – SLaks
“myData.json xhr \t d3.min.js:6 \t 1.2 KB \t 40 ms \t”。它不能被加载。它没有被发现。我在Chrome上激活了CORS。 @SLaks – thadeuszlay