J'ai réduit mon code à l'application express-js la plus simple que j'ai pu créer:
var express = require("express"),
app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);
Mon répertoire ressemble à ceci:
static_file.js
/styles
default.css
Pourtant, lorsque j'accède à http://localhost:3001/styles/default.css
, l'erreur suivante apparaît:
Cannot GET / styles /
default.css
J'utilise express 2.3.3
et node 0.4.7
. Qu'est-ce que je fais mal?
Essayez http://localhost:3001/default.css
.
Pour avoir /styles
dans votre URL de requête, utilisez:
app.use("/styles", express.static(__dirname + '/styles'));
Regardez les exemples sur cette 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'));
J'ai le même problème. J'ai résolu le problème avec le code suivant:
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')));
Exemple de demande statique:
http://pruebaexpress.lite.c9.io/js/socket.io.js
J'ai besoin d'une solution plus simple. Est-ce qu'il existe?
default.css
devrait être disponible à http://localhost:3001/default.css
La styles
dans app.use(express.static(__dirname + '/styles'));
indique simplement à express de rechercher dans le répertoire styles
un fichier statique à servir. Cela ne fait pas (confusion) alors faire partie du chemin sur lequel il est disponible.
Ce travail pour moi:
app.use('*/css',express.static('public/css'));
app.use('*/js',express.static('public/js'));
app.use('*/images',express.static('public/images'));
Dans votre server.js:
var express = require("express");
var app = express();
app.use(express.static(__dirname + '/public'));
Vous avez declare express et app séparément, créez un dossier nommé "public" ou à votre guise, et pourtant vous pouvez accéder à ces dossiers. Dans votre modèle de code src, vous avez mis le chemin relatif de/public (ou le nom de votre dossier dans des fichiers statiques). Méfiez-vous des bars sur les itinéraires.
pour servir des fichiers statiques (css, images, fichiers js), il suffit de suivre deux étapes:
passer le répertoire des fichiers css au middleware intégré 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'));
pour accéder aux fichiers css ou aux images, saisissez simplement url http: // localhost: port/filename.css ex: http: // localhost: 8081/bootstrap.css
note: pour lier les fichiers css au format HTML, tapez simplement<link href="file_name.css" rel="stylesheet">
si j'écris ce code
var express = require('express');
var app = express();
app.use('/css',express.static( 'public/css'));
pour accéder aux fichiers statiques il suffit de taper url: localhost: port/css/nomfichier.css ex: http: // localhost: 8081/css/bootstrap.css
note pour lier des fichiers CSS avec HTML, ajoutez simplement la ligne suivante
<link href="css/file_name.css" rel="stylesheet">
J'utilise Bootstrap CSS, JS et Fonts dans mon application. J'ai créé un dossier appelé asset
dans le répertoire racine de l'application et j'y ai placé tous ces dossiers. Puis dans le fichier du serveur ajouté la ligne suivante:
app.use("/asset",express.static("asset"));
Cette ligne me permet de charger les fichiers du répertoire asset
à partir du préfixe du chemin /asset
, tel que: http://localhost:3000/asset/css/bootstrap.min.css
.
Maintenant, dans les vues, je peux simplement inclure CSS et JS comme ci-dessous:
<link href="/asset/css/bootstrap.min.css" rel="stylesheet">
celui-ci a fonctionné pour moi
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')));
Ce qui a fonctionné pour moi est:
Au lieu d'écrireapp.use(express.static(__dirname + 'public/images'));
dans votre application.js
Écrivez simplement app.use(express.static('public/images'));
je supprime le nom du répertoire racine dans le chemin. Et vous pouvez ensuite utiliser efficacement le chemin statique dans d’autres fichiers js, par exemple:
<img src="/images/misc/background.jpg">
J'espère que cela t'aides :)
Essayez d’y accéder avec http: // localhost: 3001/default.css .
app.use(express.static(__dirname + '/styles'));
Vous lui donnez le nom du dossier, c'est-à-dire pas votre style.
si votre configuration
myApp
|
|__ public
| |
| |__ stylesheets
| | |
| | |__ style.css
| |
| |___ img
| |
| |__ logo.png
|
|__ app.js
puis,
mettre dans app.js
app.use('/static', express.static('public'));
et référez-vous à votre style.css: (dans certains fichiers .pug):
link(rel='stylesheet', href='/static/stylesheets/style.css')
En plus de ce qui précède, assurez-vous que le chemin du fichier statique commence par/(ex .../assets/css) ... pour servir des fichiers statiques dans n’importe quel répertoire au-dessus du répertoire principal (/ main).
Je trouve mon fichier css et y ajoute un itinéraire:
app.get('/css/MyCSS.css', function(req, res){
res.sendFile(__dirname + '/public/css/MyCSS.css');
});
Ensuite, cela semble fonctionner.