2013-09-20 2 views
2

Для следующих данныхNode JS, NVD3.js не может прочитать свойство baseval неопределенной

historicalBarChart = [ 
    { 
    key: "Cumulative Return", 
    values: [ 
     { 
     "label" : "A" , 
     "value" : 29.765957771107 
     } , 
     { 
     "label" : "B" , 
     "value" : 0 
     } , 
     { 
     "label" : "C" , 
     "value" : 32.807804682612 
     } , 
     { 
     "label" : "D" , 
     "value" : 196.45946739256 
     } , 
     { 
     "label" : "E" , 
     "value" : 0.19434030906893 
     } , 
     { 
     "label" : "F" , 
     "value" : 98.079782601442 
     } , 
     { 
     "label" : "G" , 
     "value" : 13.925743130903 
     } , 
     { 
     "label" : "H" , 
     "value" : 5.1387322875705 
     } 
    ] 
    } 
]; 

Я собираюсь генерировать гистограммы с использованием NVD3.js с сервером Node JS.

Моего Nodejs код для генерации SVG: ** NVD3svgnode.js **

var http = require('http'), 
    url = require('url'), 
    jsdom = require('jsdom'), 
    child_proc = require('child_process'), 
    w = 400, 
    h = 400,   
    scripts = ["file://"+__dirname+"/d3.min.js", 
       "file://"+__dirname+"/d3.layout.min.js", 
       "file://"+__dirname+"/nv.d3.min.js", 
       "file://"+__dirname+"/bar.js"], 

    htmlStub = '<!DOCTYPE html><div id="bar" style="width:'+w+'px;height:'+h+'px;"><svg xmlns="http://www.w3.org/2000/svg" version="1.1"></svg></div>'; 

    http.createServer(function (req, res) { 
      res.writeHead(200, {'Content-Type': 'image/svg+xml'}); 
      jsdom.env({features:{QuerySelector:true}, html:htmlStub, scripts:scripts, done:function(errors, window) { 
       var chart1= window.bar(); 

     d3.select('#bar svg') 
     .datum(historicalBarChart) 
     .transition().duration(500) 
     .call(chart1); 
      }}); 
}).listen(8888); 

Моего NVD3 код для создания бара: bar.js

function bar(){ 
var chart = nv.models.discreteBarChart() 
     .x(function(d) { return d.label }) 
     .y(function(d) { return d.value }) 
     .staggerLabels(true) 
     .tooltips(false) 
     .showValues(true); 
return chart; 
} 

при выполнении узел js NVD3svgnode.js, я получаю следующее исключение

file:///Users/administrator/Downloads/nodejs/d3.js:5347 
     var t = g.transform.baseVal.consolidate(); 
         ^
**strong text**TypeError: Cannot read property 'baseVal' of undefined 
    at d3.transform (file:///Users/administrator/Downloads/nodejs/d3.js:5347:28) 
    at Object.d3.transform (file:///Users/administrator/Downloads/nodejs/d3.js:5350:7) 
    at d3_interpolateTransform (file:///Users/administrator/Downloads/nodejs/d3.js:5394:35) 
    at Object.<anonymous> (file:///Users/administrator/Downloads/nodejs/d3.js:7697:32) 
    at d3_Map.<anonymous> (file:///Users/administrator/Downloads/nodejs/d3.js:7858:31) 
    at d3_Map.d3_class.forEach (file:///Users/administrator/Downloads/nodejs/d3.js:271:13) 
    at start (file:///Users/administrator/Downloads/nodejs/d3.js:7857:28) 
    at Object.callback (file:///Users/administrator/Downloads/nodejs/d3.js:7851:38) 
    at d3_timer_mark (file:///Users/administrator/Downloads/nodejs/d3.js:2075:80) 
    at d3_timer_step [as _onTimeout] (file:///Users/administrator/Downloads/nodejs/d3.js:2048:15) 

Любая помощь в этом вопросе была бы замечательной.

+0

'файл: //" + __ dirname + "/nv.d3.min.js" вы пропустили '' 'в начале? – vinayr

+0

такой же вопрос все еще существует. Любая идея? – sprabhakaran

+0

Возможный дубликат [D3 - Uncaught TypeError: Невозможно прочитать свойство «длина» неопределенного] (http://stackoverflow.com/questions/21767005/d3-uncaught-typeerror-cannot-read-property-length-of-undefined) –

ответ

0

Я предлагаю вам удалить звонок transition().duration(500) в вашем коде, это я считаю бесполезным на стороне сервера (он выполняется на сервере, а не на клиенте, поэтому пользователь не увидит переход) и трассировку стека относится к эффекту перехода, чтобы он мог исправить вашу проблему.

(У меня была такая же проблема и удалены мои переходы исправлены).

Смежные вопросы