Express-js no puede OBTENER mis archivos estáticos, ¿por qué?
Reduje mi código a la aplicación express-js más simple que pude crear:
var express = require("express"),
app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);
Mi directorio se ve así:
static_file.js
/styles
default.css
Sin embargo, cuando accedo http://localhost:3001/styles/default.css
me sale el siguiente error:
Cannot GET / styles /
default.css
Estoy usando express 2.3.3
y node 0.4.7
. ¿Qué estoy haciendo mal?
Intentar http://localhost:3001/default.css
.
Para tener /styles
en la URL de su solicitud, utilice:
app.use("/styles", express.static(__dirname + '/styles'));
Mira los ejemplos en esta página :
//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'));
Tengo el mismo problema. Resolví el problema con el siguiente código:
app.use('/img',express.static(path.join(__dirname, 'public/images')));
app.use('/js',express.static(path.join(__dirname, 'public/javascripts')));
app.use('/css',express.static(path.join(__dirname, 'public/stylesheets')));
Ejemplo de solicitud estática:
http://pruebaexpress.lite.c9.io/js/socket.io.js
Necesito una solución más simple. ¿Existe?
Esto funciona para mí:
app.use('*/css',express.static('public/css'));
app.use('*/js',express.static('public/js'));
app.use('*/images',express.static('public/images'));
default.css
debería estar disponible enhttp://localhost:3001/default.css
El styles
in app.use(express.static(__dirname + '/styles'));
simplemente le dice a Express que busque en el styles
directorio un archivo estático para servir. Entonces no forma (confusamente) parte de la ruta en la que está disponible.
En tu server.js:
var express = require("express");
var app = express();
app.use(express.static(__dirname + '/public'));
Ha declarado Express y la aplicación por separado, cree una carpeta llamada "pública" o como desee y aún así puede acceder a estas carpetas. En su plantilla src, ha agregado la ruta relativa desde /public (o el nombre de su carpeta de destino a archivos estáticos). Cuidado con los bares en las rutas.