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 public
pendant 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
shared
dossier 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_static
Code
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.js
en static/
elle ne continuera pas à regarder dans alternate_static/
.
alternate_static
soit un jour servi.
Ce n'est pas possible avec une seule injection de middleware, mais vous pouvez injecter static
plusieurs 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.root
une racine statique, que vous définissez express.static
ou connect.static
appelez, et un path
chemin 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