Kit Sunde Kit Sunde - 3 months ago 18
Node.js Question

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

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

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'));