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 podría hacer:

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 a http://localhost:3001/styles/default.css el siguiente error:

 Cannot GET / styles / default.css 

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

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

Para tener /styles en su URL de solicitud, use:

 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. He resuelto 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?

default.css debe estar disponible en http://localhost:3001/default.css

Los styles en app.use(express.static(__dirname + '/styles')); simplemente le dice a express que busque en el directorio de styles para que se publique un archivo estático. No (confusamente) forma parte de la ruta en la que está disponible.

En su server.js:

 var express = require("express"); var app = express(); app.use(express.static(__dirname + '/public')); 

Has declarado express y app por separado, crea una carpeta llamada ‘public’ o como quieras, y aun así puedes acceder a estas carpetas. En su plantilla src, ha puesto la ruta relativa desde / public (o el nombre de su carpeta destino a archivos estáticos). Ten cuidado con los bares en las rutas.

Este trabajo para mí:

 app.use('*/css',express.static('public/css')); app.use('*/js',express.static('public/js')); app.use('*/images',express.static('public/images')); 

para servir archivos estáticos (css, images, js) en solo dos pasos:

  1. pasar el directorio de archivos CSS a construido en middleware express.static

     var express = require('express'); var app = express(); /*public is folder in my project directory contains three folders css,image,js */ //css =>folder contains css file //image=>folder contains images //js =>folder contains javascript files app.use(express.static( 'public/css')); 
  2. para acceder a los archivos o imágenes css solo escriba url http: // localhost: port / filename.css ex: http: // localhost: 8081 / bootstrap.css

nota: para vincular archivos css a html simplemente escriba

si escribo este código

 var express = require('express'); var app = express(); app.use('/css',express.static( 'public/css')); 

para acceder a los archivos estáticos solo escriba url: localhost: port / css / filename.css ex: http: // localhost: 8081 / css / bootstrap.css

nota para vincular archivos css con html simplemente agregue la siguiente línea

  

Estoy usando Bootstrap CSS, JS y Fonts en mi aplicación. Creé una carpeta llamada asset en el directorio raíz de la aplicación y coloco todas estas carpetas dentro de ella. Luego, en el archivo del servidor se agrega la siguiente línea:

 app.use("/asset",express.static("asset")); 

Esta línea me permite cargar los archivos que están en el directorio de asset desde el /asset prefijo de ruta de /asset como: http://localhost:3000/asset/css/bootstrap.min.css .

Ahora en las vistas puedo simplemente incluir CSS y JS como a continuación:

  

este funcionó para mí

 app.use(express.static(path.join(__dirname, 'public'))); app.use('/img',express.static(path.join(__dirname, 'public/images'))); app.use('/shopping-cart/javascripts',express.static(path.join(__dirname, 'public/javascripts'))); app.use('/shopping-cart/stylesheets',express.static(path.join(__dirname, 'public/stylesheets'))); app.use('/user/stylesheets',express.static(path.join(__dirname, 'public/stylesheets'))); app.use('/user/javascripts',express.static(path.join(__dirname, 'public/javascripts'))); 

Intente acceder a él con http: // localhost: 3001 / default.css .

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

En realidad, le está dando el nombre de carpeta, es decir, estilos, no su suburbano.

Lo que funcionó para mí es:

En lugar de escribir app.use(express.static(__dirname + 'public/images')); en tu app.js

Simplemente escriba app.use(express.static('public/images'));

es decir, eliminar el nombre del directorio raíz en la ruta. Y luego puede usar la ruta estática de manera efectiva en otros archivos js, por ejemplo:

  

Espero que esto ayude 🙂

Además de lo anterior, asegúrese de que la ruta del archivo estático comience con / (ex … / assets / css) … para servir archivos estáticos en cualquier directorio sobre el directorio principal (/ main)

Encuentro mi archivo css y agrego una ruta a él:

 app.get('/css/MyCSS.css', function(req, res){ res.sendFile(__dirname + '/public/css/MyCSS.css'); }); 

Entonces parece funcionar.

si tu configuración

 myApp | |__ public | | | |__ stylesheets | | | | | |__ style.css | | | |___ img | | | |__ logo.png | |__ app.js 

entonces,
poner en app.js

 app.use('/static', express.static('public')); 

y refiérase a su style.css: (en algún archivo .pug):

 link(rel='stylesheet', href='/static/stylesheets/style.css')