我想使用D3.js解析数据/时间。为此,我创建了一个javascript文件并使用var d3 = require('d3')
。
我使用npm install d3
安装了D3,并尝试npm install d3 --save
将其保存在package.json
文件中:
{
"name": "school",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"browserify": "^13.1.0",
"bufferutil": "^1.2.1",
"d3": "^4.2.2",
"express": "^4.14.0",
"guid": "0.0.12",
"gulp": "^3.9.1",
"react": "^15.3.1",
"react-dom": "^15.3.1",
"reactify": "^1.1.1",
"utf-8-validate": "^1.2.1",
"vinyl-source-stream": "^1.1.0",
"websocket": "^1.0.23",
"ws": "^1.1.1"
}
}
但是,我正面临这个例外:
TypeError: d3.time is undefined
程序代码:
'use strict';
var d3 = require("d3");
var latency_arr = [];
var time_arr = [];
var timeFormat = d3.time.format('%H:%M:%S %L');
module.exports = {
histogram: function(data) {
console.log(data);
return {
getBin: function() {
var jsonObject = JSON.parse(data);
this.time_arr = jsonObject.time;
for(var i = 0 ; i < this.time_arr.length ; i++){
temp_time = this.time_arr[i];
this.time_arr[i] = new Date(timeFormat.parse(temp_time));
}
return this.time_arr;
},
addValue: function(date, value) {
return true;
},
getValues: function() {
if(data !== undefined){
var jsonObject = JSON.parse(data);
this.latency_arr = jsonObject.latency;
return this.latency_arr;
}
}
};
}
};
检查:
> var d3 = require('d3');
undefined
但是d3模块位于node_modules目录中。
为什么不识别d3模块?我错过了什么?
答案 0 :(得分:33)
您要求D3 v4.2.2 不再具有let oChart = new Chart(this.chartOptions);
属性,这是D3 v3的一部分。根据更改日志,time formats已经受到常规命名空间扁平化的影响,因此重命名如下:
- d3.time.format↦d3.timeFormat
- d3.time.format.utc↦d3.utcFormat
- d3.time.format.iso↦d3.isoFormat
也就是说,它确实识别d3.time
对象,而d3
未定义。将代码更改为
d3.time
应该这样做。
答案 1 :(得分:0)
识别d3模块。 JS中的每个赋值都不返回任何内容,因此执行行
var d3 = require('d3');
必然会返回...没有,因此检查中的undefined
(为了确保在控制台中输入var a = 0
,您还会得到undefined
响应) 。看起来函数没有在模块中定义,而是模块没有被加载。
您应该检查模块的API,以确保使用正确的功能。
L.E。为您省点麻烦,这是链接
https://github.com/d3/d3/blob/master/API.md#time-formats-d3-time-format