Réponses:
Vous pouvez également définir le chemin d'accès à partir duquel les fichiers statiques seront servis sur le Web en spécifiant un (premier) paramètre supplémentaire use()comme suit:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
De cette façon, vous obtenez deux répertoires différents sur le Web qui reflètent vos répertoires locaux, et non un chemin d'URL qui bascule entre deux répertoires locaux.
En d'autres termes, le modèle d'URL:
http://your.server.com/public/*
Sert les fichiers du répertoire local publicpendant que:
http://your.server.com/public2/*
Sert les fichiers du répertoire local public2.
BTW, cela est également utile si vous ne voulez pas que statique serve les fichiers à partir de la racine de votre serveur mais plutôt à partir d'un chemin plus qualifié.
HTH
"homepage": "/public"et "homepage": "/public2"au package.json de l'application react respective. Pour plus d'informations sur l'utilisation de deux applications de réaction, voir ma réponse ici stackoverflow.com/a/48569896/4746648
shareddossier pour que vous puissiez utiliser "./"et "./shared"et boum, vous pouvez facilement partager des fichiers js: 3 Merci
Vous pouvez également «fusionner» des répertoires dans un seul répertoire visible
Structure du répertoire
/static/alternate_staticCode
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Static et Alternate_static seront servis comme s'ils étaient dans le même répertoire. Attention aux clobbers de nom de fichier, cependant.
main.jsen static/elle ne continuera pas à regarder dans alternate_static/.
alternate_staticsoit un jour servi.
Ce n'est pas possible avec une seule injection de middleware, mais vous pouvez injecter staticplusieurs fois un middleware:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Explication
Regardez connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Il existe options.rootune racine statique, que vous définissez express.staticou connect.staticappelez, et un pathchemin de requête.
Regardez plus à connect / lib / middleware / static.js # 154 :
fs.stat(path, function(err, stat){
// ignore ENOENT
if (err) {
if (fn) return fn(err);
return ('ENOENT' == err.code || 'ENAMETOOLONG' == err.code)
? next()
: next(err);
Chemin vérifié une seule fois, et si le fichier est introuvable, la demande est passée au middleware suivant.
Mise à jour pour Connect 2.x
Les liens vers le code sont inactuels pour Connect 2.x, mais plusieurs utilisations de middleware statiques sont toujours possibles comme auparavant.
const express = require('express');
const path = require('path');
const pagesPath = path.join(__dirname, '/cheatsheet');
const cssPath = path.join(__dirname, '/stylesheet');
const port = process.env.PORT || 3000;
var app = express();
app.use("/cheatsheet" ,express.static(pagesPath));
app.use("/stylesheet",express.static(cssPath));
app.get('/',(request,response)=>{
response.send('Hello CSS!!!');
});
app.get('/bad',(request,response)=>{
response.send({error: 'Bad Request'});
});
app.listen(port, ()=> {
console.log(`Server is running on Port ${port}` );
console.log(__dirname);
});
// folder structure
/cheatsheet/index.html
/stylesheet/style.css