我正在尝试制作一个应用程序--生成Twitter单词计数的“实时”图表,基本上是在24小时内扩展和练习NodeJS第14章中的内容。我决定使用'Rickshaw‘,我想我应该从简单的示例开始工作。但是,虽然我可以加载一个简单的html页面,但我无法获得要显示的图形。火狐调试表明:"ReferenceError:人力车没有定义这个错误图=新Rickshaw.Graph( {“)的中断。这意味着有一个引用错误,但经过几个小时的谷歌和阅读,我没有看到它。目录结构正确;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>发布于 2013-08-01 01:39:28
您需要配置express.static中间件,以便express知道在哪里查找静态资源(如js和css文件):
app.use(express.static( __dirname + '/public'));将这些资源放入public文件夹(如上面的示例所示)或static文件夹中是很常见的。
如果您创建一个public文件夹并将其组织如下
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文档。
https://stackoverflow.com/questions/17982478
复制相似问题