【发布时间】:2021-12-15 02:18:37
【问题描述】:
我想使用 d3 服务器端直接或通过 SVG 创建 PNG 文件。
我可以在这里找到许多关于如何实现这一点的讨论,但它们都是多年前的,指的是 d3 v3 或 v4,node 回到 v10。
是否仍然有必要假装我们在浏览器中,使用类似jsdom 的东西提供伪 DOM?
替代d3-node 系列软件包实际上仍然有效吗?它们大多有几年没有更新了。
这是我在 macOS 11.6 上节点 17.0.1、d3 7.1.1、d3-node 2.2.3 上的 MNWE:
const fs = require('fs');
const d3 = require('d3-node')().d3;
const output = require('d3node-output');
const d3nBar = require('d3node-barchart');
// const d3nPie = require('d3node-piechart');
// const csvString = fs.readFileSync('mentions.csv').toString();
const csvString=`key,value
Bob,33
Robin,12
...
Stacy,20
Charles,13
Mary,29`
const csvData = d3.csvParse(csvString);
const selector = `#chart`
const container = `<div id="container"><h2>Bar Chart</h2><div id="chart"></div></div>`
const style = `.bar{fill: steelblue;}
.bar:hover{fill: brown;}
.axis{font: 10px sans-serif;}
.axis path,.axis line{fill: none;stroke: #000;shape-rendering: crispEdges;}
.x.axis path{display: none;}`
// create output files
// const pie = d3nPie(csvData, selector, container, style)
const bar = d3nBar(csvData, selector, container, style)
output('output', bar);
d3node-barchart 库中出现的倒数第二行出现以下错误:
/Users/j/Dropbox/NP-other-tests/node_modules/d3node-barchart/index.js:55
x.domain(data.map((d) => d.key));
^
TypeError: Cannot read properties of undefined (reading 'map')
at bar (/Users/j/Dropbox/NP-other-tests/node_modules/d3node-barchart/index.js:55:17)
at Object.<anonymous> (/Users/j/Dropbox/NP-other-tests/d3test.cjs:45:13)
at Module._compile (node:internal/modules/cjs/loader:1095:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1147:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47
【问题讨论】:
-
您介意编辑问题以显示遇到的错误消息吗?
-
谢谢@Mehdi,现已添加。
标签: javascript node.js d3.js