node.js - Expressjs 无法识别静态文件

标签 node.js express

我有一个 nodejs 应用程序并且正在使用 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');
            }
         }
     }

我启用了错误处理,但是当我以这种方式使用路由时,它不使用表达错误处理,但是如果我取消它,它就会使用。

最佳答案

按如下方式设置静态 http 中间件:

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

然后使用 url 在 ./public/css/style.css 中检索一个文件:

"/css/style.css"

当您实际请求文件时,public 不是路径的一部分。

关于node.js - Expressjs 无法识别静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9983031/

相关文章:

javascript - React - 当按钮增加并在另一个页面中呈现结果时增加计数器的最佳方法?

javascript - 如何获取 socket.io 房间中的客户端数量?

javascript - 快速路由器 : Cast to ObjectId error

express - sequelize创建db记录后如何从响应中删除json元素?

javascript - post请求完成后如何重定向用户

javascript - 无法删除 express 中的 cookie

mysql - 使用 Sequelize 进行 Cloud SQL 部署时出现 Google App Engine 错误

javascript - 在nodejs中找不到zepto模块

javascript - 使用 phantom.js 和 node.js 安排 PDF 生成

javascript - Express.Js、Node.Js、MongoDB 问题