Nodejs + Rickshaw:src =引用不起作用

我正在试图制作一个应用程序来生成Twitter字数统计的“实时”图表,基本上是试图在第24章的NodeJS中进行扩展和练习。 我决定使用“人力车”,我想我只是简单地得到一个简单的例子工作。 但是,虽然我可以得到一个简单的HTML页面加载,我不能得到一个graphics显示。 Firefoxdebugging指出:“ReferenceError:人力车没有定义[Break On This Error] graph = new Rickshaw.Graph({”。这意味着有一个引用错误,但经过几个小时的search和阅读,我不目录结构是正确的; npm正确安装所有模块,没有错误。任何人都可以看到我失踪的东西吗?

注:我是JS / Node的新手,虽然本书在Express 2.x中工作,但我一直在使用Express 3.x,所以不知道在所有情况下翻译是否正确。 代码如下:

的package.json

{ "name":"socket.io-twitter-example", "version": "0.0.1", "private": "true", "dependencies": { "express": ">=2.5.4", "rickshaw": ">=1.1.0" } } 

app.js

  var express = require('express'), rickshaw = require('rickshaw'), app = express(), http = require('http'), server = http.createServer(app) server.listen(3000); app.get('/', function (req,res) { res.sendfile(__dirname + '/index.html'); }); 

的index.html

  <!DOCTYPE html> <html lang="eng"> <head> <meta charset="UTF-8" /> <title>Socket.IO Twitter Example</title> </head> <body> <h1>Rickshaw Example</h1> <div id="chart"></div> <ul class="tweets"></ul> <script type="text/javascript" src="node_modules/rickshaw/vendor/d3.v2.js"></script> //don't think "node_modules/" is required, but doesn't work without either <script type="text/javascript" src="node_modules/rickshaw/rickshaw.min.js"></script> <script> graph = new Rickshaw.Graph( { element: document.querySelector("#chart"), width: 285, height: 180, series: [{ color: 'steelblue', data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ] }] }); graph.render(); </script> </body> </html> 

您需要configurationexpress.static中间件,以便express知道在哪里查找静态资源(如js和css文件):

 app.use(express.static( __dirname + '/public')); 

通常把这些资源放到公用文件夹(如上面的例子所示)或static文件夹中。

如果您创build一个公用文件夹并像它一样组织它

 app.js public rickshaw vendor d3.v2.js rickshaw.min.js 

那么你将能够正确地加载你的HTML使用的文件

 <script type="text/javascript" src="/rickshaw/vendor/d3.v2.js"></script> <script type="text/javascript" src="/rickshaw/rickshaw.min.js"></script> 

有关中间件的更多信息和示例,请参阅express文档的此部分 。