2012-03-01 5 views
5

'dan d3'ü çalıştırmak istiyorum Komut satırından bazı d3 kodlarını çalıştırmak istiyorum. Başlangıçta sadece şu gibi bir şey denedim:Bir Cakefile

Fakat bu işe yaramadı. Böyle hatalar var:

node.js:201 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
ReferenceError: CSSStyleDeclaration is not defined 
    at /Users/mydir/Documents/classes/middleclass/app/lib/d3.min.js:1:21272 
    at Object.<anonymous> (/Users/mydir/Documents/classes/middleclass/app/lib/d3.min.js:2:25395) 
    at Module._compile (module.js:432:26) 
    at Object..js (module.js:450:10) 
    at Module.load (module.js:351:31) 
    at Function._load (module.js:310:12) 
    at Module.require (module.js:357:17) 
    at require (module.js:368:17) 
    at Object.action (/Users/mydir/Documents/classes/middleclass/Cakefile:22:10) 
    at /usr/local/lib/node_modules/coffee-script/lib/coffee-script/cake.js:39:26 

Yani ... bu istisna bir tarayıcının içindeki d3 yürütmek gerektiğini söylüyordu düşündüm. Bunu birkaç farklı şekilde denedim. Temel olarak, eğer phantomjs'ı kovduysam muhtemelen ne yapmak istediğimi yapabileceğimi düşündüm. Gerçi bu rota gittiğinizde

task 'data2', 'Build some data with d3', -> 
    hem = spawn 'hem', ['server'] 
    phantom = require('phantom') 
    phantom.create (ph) -> 
    ph.createPage (page) -> 
     page.open 'http://localhost:9294/sandbox.html', (status) -> 
     page.evaluate (-> window), (window) -> 
      require = window.require 
      require('lib/d3.v2') 
      console.log("d3 version = "+ d3.version) 
      ph.exit() 
      hem.kill() 

, hep böyle istisnalar elde sonunda: İşte benim Cakefile oldu ben yanlış yapıyorum ne

TypeError: object is not a function 
    at Object.CALL_NON_FUNCTION (native) 
    at Object.<anonymous> (/Users/mydir/Documents/classes/middleclass/Cakefile:52:13) 
    at Object.<anonymous> (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode-protocol/index.js:274:16) 
    at apply (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode-protocol/index.js:143:17) 
    at EventEmitter.handle (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode-protocol/index.js:120:13) 
    at /Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode-protocol/index.js:81:20 
    at EventEmitter.<anonymous> (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode/node_modules/lazy/lazy.js:62:13) 
    at EventEmitter.<anonymous> (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode/node_modules/lazy/lazy.js:46:19) 
    at EventEmitter.emit (events.js:67:17) 
    at EventEmitter.<anonymous> (/Users/mydir/Documents/classes/middleclass/node_modules/phantom/node_modules/dnode/node_modules/lazy/lazy.js:46:39) 

?? mbostock için


sayesinde aşağıdaki çalışma var:

Benim package.json:

{ 
    "name": "app", 
    "version": "0.0.1", 
    "dependencies": { 
     "d3": "~2.8.0", 
     "jsdom": "~0.2.13" 
    } 
} 

Benim Cakefile:

task 'd3', 'Do something with d3', -> 
    jsdom = require('jsdom') 
    jsdom.env({ 
    html: 'public/sandbox.html' 
    done: (errors,window) -> 
     require('d3/index.js') 
     console.log("d3 version = "+ d3.version) 
    }) 
+0

Bu sorunu çözüldü gibi görünüyor. Kişisel olarak aynı hatayı alıyorum ve 'export NODE_PATH =/usr/local/lib/node_modules' –

cevap

3

Bkz D3 en package.json. Daha spesifik olarak, Düğüm içinde veya benzeri ortamlarda çalışırken gerek duyduğunuz dosya d3.v2.js yerine index.js; Bu dosya D3'ü require operatörüyle uyumlu hale getiren bazı özel yamalar içerir. Kendi proje klasöründe iseniz

eğer',,,, kendiniz için d3 deposuna cd denemek etkileşimli bir kabuk oluşturmak için node çalıştırın ve sonra

var d3 = require("./"); 

söylemek Ya için node_modules içine D3 yükledim/d3 aracılığı npm (npm install d3), şunları söyleyebilirsiniz:

var d3 = require("d3"); 
+0

ile sabitledim Biraz eski soruyu yanıtladığınız için teşekkürler - Bugün bunu deneyeceğim. Ve d3 yazarından daha az değil! – dsummersl

+0

Sadece sormak için takip ettim diye düşündüm ... yazar bu konu üzerinde ... 'npm install d3' denedim ve var d3 = gerektirir ('d3'); Düğüm konsolunda bana 'undefined' verir ama ben d3.version yapabilirim ve bir sayı alıp onu app.js içine koyarak verir: TypeError: undefined 'BSON' özelliğini okuyamıyorum ... bir şey özlüyorum mu? – pland

+0

@pland http://stackoverflow.com/questions/9948350 'var d3 = require (" d3 ");' konsolda "undefined" yazıyor; çünkü bu ifade undefined olarak değerlendiriliyor; kafa karıştırıcı, bu 'd3' değişkeninin tanımsız olduğu anlamına gelmez! 'D3.version' yazdırabilmeniz gerçeği, paketin doğru şekilde yüklendiğini gösterir. – mbostock