node.js - serve - require('' express '') in node js
Express-js no puede obtener mis archivos estáticos, ¿por qué? (13)
He reducido 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 parece a esto:
static_file.js
/styles
default.css
Sin embargo, cuando accedo a http://localhost:3001/styles/default.css
, 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?
Además de lo anterior, asegúrese de que la ruta del archivo estático comience con / (ex ... / asset / css) ... para servir archivos estáticos en cualquier directorio que se encuentre sobre el directorio principal (/ main)
En su 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 ''public'' o como quiera, y aún así puede acceder a estas carpetas. En su plantilla src, ha colocado la ruta relativa de / public (o el nombre de su destino de carpeta en archivos estáticos). Cuidado con los bares en las rutas.
Encuentro mi archivo css y le agrego una ruta:
app.get(''/css/MyCSS.css'', function(req, res){
res.sendFile(__dirname + ''/public/css/MyCSS.css'');
});
Entonces parece que funciona.
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''));
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 agregado 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 prefijo de ruta /asset
como: http://localhost:3000/asset/css/bootstrap.min.css
.
Ahora en las vistas puedo simplemente incluir CSS y JS como a continuación:
<link href="/asset/css/bootstrap.min.css" rel="stylesheet">
Intente acceder a él con http://localhost:3001/default.css .
app.use(express.static(__dirname + ''/styles''));
Realmente le estás dando el nombre de carpeta, es decir, estilos, no tu suburl.
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:
<img src="/images/misc/background.jpg">
Espero que esto ayude :)
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 sencilla. ¿Existe?
este funciono para mi
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'')));
para servir archivos estáticos (css, imágenes, archivos js) solo dos pasos:
pasar el directorio de archivos css a middleware incorporado 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''));
para acceder a los archivos o imágenes css, simplemente ingrese url http://localhost:port/filename.css ex: http://localhost:8081/bootstrap.css
nota: para vincular archivos css a html simplemente escriba <link href="file_name.css" rel="stylesheet">
si escribo este codigo
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 solo agrega la siguiente línea
<link href="css/file_name.css" rel="stylesheet">
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 consulte su style.css: (en algunos archivos .pug):
link(rel=''stylesheet'', href=''/static/stylesheets/style.css'')
default.css
debería estar disponible en http://localhost:3001/default.css
Los styles
en app.use(express.static(__dirname + ''/styles''));
solo le dice a Express que busque en el directorio de styles
un archivo estático para servir. No (confusamente) forma parte de la ruta en la que está disponible.