Respuestas:
También puede establecer la ruta desde la que se enviarán los archivos estáticos a la web especificando un (primer) parámetro adicional para use()
que así:
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
De esa manera, obtiene dos directorios diferentes en la web que reflejan sus directorios locales, no una ruta de URL que falla entre dos directorios locales.
En otras palabras, el patrón de URL:
http://your.server.com/public/*
Sirve archivos del directorio local public
mientras:
http://your.server.com/public2/*
Sirve archivos del directorio local public2
.
Por cierto, esto también es útil si no desea que la estática sirva los archivos desde la raíz de su servidor, sino desde una ruta más calificada.
HTH
"homepage": "/public"
y "homepage": "/public2"
al paquete.json de la aplicación de reacción respectiva. Para obtener más información sobre el uso de dos aplicaciones de reacción, consulte mi respuesta aquí stackoverflow.com/a/48569896/4746648
shared
carpeta para poder usar "./"
y "./shared"
y boom, puede compartir fácilmente archivos js: 3 Gracias
También puede "fusionar" directorios en un solo directorio visible
Estructura de directorios
/static
/alternate_static
Código
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Tanto static como alternate_static se servirán como si estuvieran en el mismo directorio. Sin embargo, tenga cuidado con los nombres de archivo.
main.js
adentro static/
, no continuará mirando adentro alternate_static/
.
alternate_static
entregara alguna vez.
No es posible mediante una inyección de middleware, pero puede inyectar static
middleware varias veces:
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Explicación
Mire connect / lib / middleware / static.js # 143 :
path = normalize(join(root, path));
Hay una options.root
raíz estática, que define express.static
o connect.static
llama, y path
una ruta de solicitud.
Mire más en 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);
La ruta se verificó solo una vez y, si el archivo no se encontró, la solicitud pasó al siguiente middleware.
Actualización para Connect 2.x
Los enlaces al código no son actuales para Connect 2.x, pero el uso de middleware estático múltiple sigue siendo posible como antes.
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