Tuesday, February 4, 2014

Running D3 in Node.js on Windows without Python

If you do a quick search on running D3 in Node.js, several great examples show up. Once such example is http://mango-is.com/blog/engineering/pre-render-d3-js-charts-at-server-side.html. Unfortunately, the D3 NPM package has a dependency on the jsdom NPM package, which has a dependency on Contextify, which has a dependency on Python and C++. While this isn't that big of a deal, it does add some complexity to getting setup in a Windows environment. Luckily, there is an NPM package named jsdom-nogyp that removes the dependency on Contextify.

Here are the steps to get that previously mentioned example up and running with jsdom-nogyp:

1. Create a directory for your app and add the D3.min.js file to it.

2. Install the jsdom-nogyp NPM package with the command "npm install jsdom-nogyp".

3. Create a new file named test.js and add the following code within it. This code is basically a merge of the original example and the index.js file from the D3 code-base.

4. You can now run the test with the command "node test.js".


  1. This example works for me. But if I try to pull in data from a CSV file with d3.csv, I get this kind of error:

    oresend", "progress", "load", "error"), headers = {}, request = new XMLHttpReq
    ReferenceError: XMLHttpRequest is not defined
    at d3_xhr (C:\wamp\www\vital\d3.v3.js:1863:114)

    I've tried to load some kind of XMLHttpRequest facility into my script, but nothing has worked so far. Do you have any ideas about how to deal with this?

  2. I get this error when I try this.