如何解决TypeError:d3.time是不确定的?
我想用D3.jsparsing数据/时间 为此,我创build了一个JavaScript文件并使用var d3 = require('d3')
。 我使用npm install d3
来npm install 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模块? 我错过了什么?
您需要D3 v4.2.2 ,它不再具有d3.time
属性,这是D3 v3的一部分。 根据更新日志, 时间格式受到一般名称空间的限制,因此更名如下:
- d3.time.format↦d3.timeFormat
- d3.time.format.utc d3.utcFormat
- d3.time.format.iso↦d3.iso 格式
也就是说,它确实承认d3
对象,而d3.time
是未定义的。 改变你的代码
var timeFormat = d3.timeFormat('%H:%M:%S %L');
应该做的伎俩。
d3模块被识别。 JS中的每个赋值都不返回,因此执行该行
var d3 = require('d3');
必然会返回…什么都没有,因此在你的检查中是undefined
(为了确定,只要在你的控制台inputvar a = 0
,你也会得到一个undefined
响应)。 看起来这个函数没有在模块中定义,而是模块没有被加载。
您应该检查模块的API,以确保您使用正确的function。
LE节省了一些麻烦,这里是链接
https://github.com/d3/d3/blob/master/API.md#time-formats-d3-time-format