• <tfoot id='uibsV'></tfoot>

  • <i id='uibsV'><tr id='uibsV'><dt id='uibsV'><q id='uibsV'><span id='uibsV'><b id='uibsV'><form id='uibsV'><ins id='uibsV'></ins><ul id='uibsV'></ul><sub id='uibsV'></sub></form><legend id='uibsV'></legend><bdo id='uibsV'><pre id='uibsV'><center id='uibsV'></center></pre></bdo></b><th id='uibsV'></th></span></q></dt></tr></i><div id='uibsV'><tfoot id='uibsV'></tfoot><dl id='uibsV'><fieldset id='uibsV'></fieldset></dl></div>
    • <bdo id='uibsV'></bdo><ul id='uibsV'></ul>

    <small id='uibsV'></small><noframes id='uibsV'>

    1. <legend id='uibsV'><style id='uibsV'><dir id='uibsV'><q id='uibsV'></q></dir></style></legend>
      1. 我想从 Cakefile 运行 d3

        时间:2024-04-19
      2. <legend id='8QhNn'><style id='8QhNn'><dir id='8QhNn'><q id='8QhNn'></q></dir></style></legend>
        • <bdo id='8QhNn'></bdo><ul id='8QhNn'></ul>

          <small id='8QhNn'></small><noframes id='8QhNn'>

              <tbody id='8QhNn'></tbody>
            <tfoot id='8QhNn'></tfoot>

                <i id='8QhNn'><tr id='8QhNn'><dt id='8QhNn'><q id='8QhNn'><span id='8QhNn'><b id='8QhNn'><form id='8QhNn'><ins id='8QhNn'></ins><ul id='8QhNn'></ul><sub id='8QhNn'></sub></form><legend id='8QhNn'></legend><bdo id='8QhNn'><pre id='8QhNn'><center id='8QhNn'></center></pre></bdo></b><th id='8QhNn'></th></span></q></dt></tr></i><div id='8QhNn'><tfoot id='8QhNn'></tfoot><dl id='8QhNn'><fieldset id='8QhNn'></fieldset></dl></div>
                  本文介绍了我想从 Cakefile 运行 d3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想从命令行执行一些 d3 代码.最初我只是尝试了类似的东西:

                  I'd like to execute some d3 code from the command line. Initially I just tried something like:

                  task 'data', 'Build some data with d3', ->
                        d3 = require('lib/d3.v2')
                        console.log "d3 version = "+ d3.version
                  

                  但这没有用.我遇到了这样的错误:

                  But this didn't work. I got errors like this:

                  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
                  

                  所以...我认为这个异常告诉我我需要在浏览器中执行 d3.我尝试了几种不同的方式.不过,基本上,我想如果我只是启动 phantomjs,我可能能够做我想做的事.这是我的蛋糕文件:

                  So...I figured this exception was telling me that I need to execute d3 inside of a browser. I tried this in a couple different ways. Basically though, I thought if I just fired up phantomjs I'd probably be able to do what I wanted to do. Here was my Cakefile:

                  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()
                  

                  不过,当我走这条路时,我总是会遇到这样的异常:

                  When I go this route though, I always end up getting exceptions like this:

                  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,我得到了以下工作:

                  Thanks to mbostock I got the following working:

                  我的 package.json:

                  My package.json:

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

                  我的蛋糕文件:

                  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)
                    })
                  

                  推荐答案

                  参见 D3 的 包.json.更具体地说,在 Node 或类似环境中运行时需要的文件是 index.html.js 而不是 d3.v2.js;该文件包含一些特殊补丁,使 D3 与 require 运算符兼容.

                  See D3's package.json. More specifically, the file you want to require when running inside Node or similar environments is index.js rather than d3.v2.js; this file contains some special patches that make D3 compatible with the require operator.

                  要自己尝试一下,cd 到 d3 存储库,运行 node 以创建交互式 shell,然后说

                  To try it out for yourself, cd to the d3 repository, run node to create an interactive shell, and then say

                  var d3 = require("./");
                  

                  或者,如果您在自己的项目文件夹中,如果您已通过 npm (npm install d3) 将 D3 安装到 node_modules/d3,您可以说:

                  Or, if you're in your own project folder, if you've installed D3 into node_modules/d3 via npm (npm install d3), you can say:

                  var d3 = require("d3");
                  

                  这篇关于我想从 Cakefile 运行 d3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:在 JavaScript 中压缩对象层次结构 下一篇:在生产环境中使用 CoffeeScript

                  相关文章

                • <legend id='ZZVnH'><style id='ZZVnH'><dir id='ZZVnH'><q id='ZZVnH'></q></dir></style></legend>

                  <i id='ZZVnH'><tr id='ZZVnH'><dt id='ZZVnH'><q id='ZZVnH'><span id='ZZVnH'><b id='ZZVnH'><form id='ZZVnH'><ins id='ZZVnH'></ins><ul id='ZZVnH'></ul><sub id='ZZVnH'></sub></form><legend id='ZZVnH'></legend><bdo id='ZZVnH'><pre id='ZZVnH'><center id='ZZVnH'></center></pre></bdo></b><th id='ZZVnH'></th></span></q></dt></tr></i><div id='ZZVnH'><tfoot id='ZZVnH'></tfoot><dl id='ZZVnH'><fieldset id='ZZVnH'></fieldset></dl></div>

                  <small id='ZZVnH'></small><noframes id='ZZVnH'>

                    1. <tfoot id='ZZVnH'></tfoot>

                        <bdo id='ZZVnH'></bdo><ul id='ZZVnH'></ul>