Pregunta Configuración de dos directorios estáticos diferentes en node.js Express framework


¿Es posible? Me gustaría configurar dos directorios diferentes para servir archivos estáticos. Digamos / public y / mnt


75
2018-05-12 04:53


origen


Respuestas:


También puede establecer la ruta desde la que se servirán los archivos estáticos a la web especificando un parámetro adicional (primero) para use() al igual que:

app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));

De esta forma, obtendrá dos directorios diferentes en la web que reflejan sus directorios locales, no una ruta de acceso 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 los datos estáticos sirvan a los archivos desde la raíz de su servidor, sino desde una ruta más calificada.

HTH


122
2017-09-28 22:51



No es posible con una inyección de middleware, pero puedes inyectar static middleware varias veces:

app.configure('development', function(){
    app.use(express.static(__dirname + '/public1'));
    app.use(express.static(__dirname + '/public2'));
});

Explicación

Mirar connect / lib / middleware / static.js # 143:

path = normalize(join(root, path));

Ahi esta options.root es una raíz estática, que defines en express.static o connect.static llamar, y path es ruta de solicitud

Mira más a 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);

Ruta comprobada solo una vez, y si la solicitud de archivo no encontrado pasa al siguiente middleware.

Actualización para Connect 2.x

Los enlaces al código son inactuales para Connect 2.x, pero el uso de middleware estático múltiple todavía es posible como antes.


39
2018-05-12 10:23



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 mostrarán como si estuvieran en el mismo directorio. Sin embargo, ten cuidado con el nombre de archivo de clobbers.


38
2018-02-12 19:34