Express-js no puede OBTENER mis archivos estáticos, ¿por qué?

Resuelto Kit Sunde asked hace 13 años • 26 respuestas

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.cssme sale el siguiente error:

Cannot GET / styles /
default.css

Estoy usando express 2.3.3y node 0.4.7. ¿Qué estoy haciendo mal?

Kit Sunde avatar May 08 '11 04:05 Kit Sunde
Aceptado

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

Para tener /stylesen 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'));
Giacomo avatar May 07 '2011 23:05 Giacomo

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?

David Miró avatar Apr 19 '2013 18:04 David Miró

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'));
Apichai avatar Aug 30 '2017 20:08 Apichai

default.cssdebería estar disponible enhttp://localhost:3001/default.css

El stylesin app.use(express.static(__dirname + '/styles'));simplemente le dice a Express que busque en el stylesdirectorio un archivo estático para servir. Entonces no forma (confusamente) parte de la ruta en la que está disponible.

diff_sky avatar Jun 20 '2012 05:06 diff_sky

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.

Baurin Leza avatar May 25 '2015 15:05 Baurin Leza