首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nodejs + Rickshaw: src=引用不工作

Nodejs + Rickshaw: src=引用不工作
EN

Stack Overflow用户
提问于 2013-07-31 23:02:35
回答 1查看 1.6K关注 0票数 1

我正在尝试制作一个应用程序--生成Twitter单词计数的“实时”图表,基本上是在24小时内扩展和练习NodeJS第14章中的内容。我决定使用'Rickshaw‘,我想我应该从简单的示例开始工作。但是,虽然我可以加载一个简单的html页面,但我无法获得要显示的图形。火狐调试表明:"ReferenceError:人力车没有定义这个错误图=新Rickshaw.Graph( {“)的中断。这意味着有一个引用错误,但经过几个小时的谷歌和阅读,我没有看到它。目录结构正确;npm正确安装了所有模块,没有错误。有人能看到我错过了什么吗?

注意:我是JS/Node新手,当这本书在Express 2.x中工作时,我一直在使用Express 3.x,所以我不确定我是否在所有情况下都得到了正确的翻译。守则如下:

package.json

代码语言:javascript
复制
    {
    "name":"socket.io-twitter-example",
    "version": "0.0.1",
    "private": "true",
    "dependencies": {
        "express": ">=2.5.4",
        "rickshaw": ">=1.1.0"
        }
    }

app.js

代码语言:javascript
复制
    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

代码语言:javascript
复制
    <!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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 01:39:28

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

代码语言:javascript
复制
app.use(express.static( __dirname + '/public'));

将这些资源放入public文件夹(如上面的示例所示)或static文件夹中是很常见的。

如果您创建一个public文件夹并将其组织如下

代码语言:javascript
复制
app.js
public
  rickshaw
    vendor
      d3.v2.js
    rickshaw.min.js

然后,您将能够在html中正确地加载文件。

代码语言:javascript
复制
<script type="text/javascript" src="/rickshaw/vendor/d3.v2.js"></script>
<script type="text/javascript" src="/rickshaw/rickshaw.min.js"></script>

有关中间件的更多信息和示例,请参见本节express文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17982478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档