Expressjs 无法识别静态文件

dzm*_*dzm 2 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');
});
Run Code Online (Sandbox Code Playgroud)

在我的/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);
Run Code Online (Sandbox Code Playgroud)

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

module.exports = function(db) {
    return {

        index: function(req, res, next) { 
                res.render('index');
            }
         }
     }
Run Code Online (Sandbox Code Playgroud)

我启用了错误处理,但是当我以这种方式使用路由时,它不使用 express 错误处理,但是如果我将其删除,它会使用。

Bra*_*ris 5

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

app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)

并使用 url 检索 ./public/css/style.css 中的文件:

"/css/style.css"
Run Code Online (Sandbox Code Playgroud)

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