Express-js can't GET my static files, why?

Kit Sunde picture Kit Sunde · May 7, 2011 · Viewed 286.8k times · Source

I've reduced my code to the simplest express-js app I could make:

var express = require("express"),
    app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);

My directory look like this:

static_file.js
/styles
  default.css

Yet when I access http://localhost:3001/styles/default.css I get the following error:

Cannot GET / styles /
default.css

I'm using express 2.3.3 and node 0.4.7. What am I doing wrong?

Answer

Giacomo picture Giacomo · May 8, 2011

Try http://localhost:3001/default.css.

To have /styles in your request URL, use:

app.use("/styles", express.static(__dirname + '/styles'));

Look at the examples on this page:

//Serve static content for the app from the "public" directory in the application directory.

    // GET /style.css etc
    app.use(express.static(__dirname + '/public'));

// Mount the middleware at "/static" to serve static content only when their request path is prefixed with "/static".

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