2012-04-02 46 views
2

我有一个nodejs应用程序并使用expressjs。我已经定义了我的静态目录,但是当我访问它时,它不会加载。我的快递配置为:Expressjs不识别静态文件

var app = express.createServer().listen(8001); 
app.configure(function(){ 
     app.use(express.methodOverride()); 
     app.use(express.bodyParser()); 
     app.use(app.router); 
     app.use('/public', express.static(__dirname + '/public')); 
     app.use(express.cookieParser()); 
     app.use(express.session({ secret: "appsession" })); 
     app.use(express.errorHandler({showStack: true, dumpExceptions: true})); 
     app.set('views', __dirname + '/views'); 
     app.set('view engine', 'hbs'); 
}); 

里面我/public目录我有3个文件夹,CSS,JS,和IMG。在CSS里面我有一个style.css。当我尝试通过http://localhost:8001/public/css/style.css直接访问它时,我得到:Cannot GET /public/css/style.css

任何想法我可能做错了什么?

谢谢!

编辑:

这似乎与我怎么有我的路线设置。我做这样的:

 var routes = require('./routes')(db); 
    pp.get('/', routes.index); 

然后在我index.js文件,我有:

module.exports = function(db) { 
    return { 

     index: function(req, res, next) { 
       res.render('index'); 
      } 
     } 
    } 

我使我的错误处理,但是当我使用的路由这样,它不使用表示错误处理,但是如果我把它拿出来的话,它确实如此。

回答

3

你的静态处理程序改成这样:

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

然后http://localhost:8001/public/css/style.css应该得到你想要

全部样本应用程序,允许curl http://localhost:8001/public/css/style.css什么:

app.js 
|-public 
    |-css 
    |-style.css 

var express = require("express"), 
    app = express.createServer(); 
app.use('/public/css', express.static(__dirname + '/public/css')); 
app.listen(8001); 
+0

是的,试过了,也不管用。 – dzm 2012-04-02 20:12:38

+0

对不起,忘了嵌套的目录。答案已更新。 – 2012-04-02 20:31:02

+0

静态处理程序会遍历子目录。 – 2012-04-02 20:36:19

4

您设置的静态HTTP中间件如下:

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

和检索./public/css/style.css与URL文件:

"/css/style.css" 

公众是不是路径的一部分,当你实际请求文件。

+1

试图访问 - 同样的交易无法获取/css/style.css – dzm 2012-04-02 20:18:46

+0

当您尝试访问它时,控制台日志中是否有任何内容? – 2012-04-02 20:28:53

+0

也检查您的文件的权限,但这是快速/连接静态中间件的工作方式。它处理子目录就好了。 – 2012-04-02 20:35:07

0

我想通了。

我有两个服务我的主机上运行。 Django在根目录下运行该站点:,然后节点运行在http://myURL.com/node

该配置适用于Node中的所有文件。 index.html文件的请求很好,但index.html在请求样式表和静态文件时,请求会在Django到达Node之前被捕获。 Django看到了这个文件,不知道它是什么,并返回了404错误。

通过禁用Django将请求捕获到这些文件,它一切正常。