Antworten:
Sie können auch den Pfad festlegen, über den statische Dateien für das Web bereitgestellt werden, indem Sie einen zusätzlichen (ersten) Parameter angeben, der use()
wie folgt aussieht :
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
Auf diese Weise erhalten Sie zwei verschiedene Verzeichnisse im Web, die Ihre lokalen Verzeichnisse widerspiegeln, und nicht einen URL-Pfad, der zwischen zwei lokalen Verzeichnissen ausfällt.
Mit anderen Worten das URL-Muster:
http://your.server.com/public/*
Serviert Dateien aus dem lokalen Verzeichnis, public
während:
http://your.server.com/public2/*
Serviert Dateien aus dem lokalen Verzeichnis public2
.
Übrigens ist dies auch nützlich, wenn Sie nicht möchten, dass statische Dateien die Dateien vom Stammverzeichnis Ihres Servers aus bereitstellen, sondern von einem qualifizierteren Pfad.
HTH
"homepage": "/public"
und "homepage": "/public2"
auf den jeweiligen reagiert App package.json. Weitere Informationen zur Verwendung von zwei Reaktions-Apps finden Sie in meiner Antwort hier stackoverflow.com/a/48569896/4746648
shared
Ordner benötigen, damit Sie js-Dateien problemlos verwenden "./"
und "./shared"
boomen können: 3 Vielen Dank
Sie können Verzeichnisse auch in einem einzigen sichtbaren Verzeichnis "zusammenführen"
Verzeichnisaufbau
/static
/alternate_static
Code
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
Sowohl static als auch alternative_static werden so bereitgestellt, als ob sie sich im selben Verzeichnis befinden. Achten Sie jedoch auf Dateinamen-Clobber.
main.js
in static/
ihm nicht suchen in weiter alternate_static/
.
alternate_static
jemals zugestellt wird .
Es ist nicht durch eine Middleware-Injektion möglich, aber Sie können static
Middleware mehrmals injizieren :
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
Erläuterung
Schauen Sie sich connect / lib / middleware / static.js # 143 an :
path = normalize(join(root, path));
Es gibt options.root
eine statische Wurzel, die Sie definieren express.static
oder connect.static
aufrufen, und einen path
Anforderungspfad.
Weitere Informationen finden Sie unter 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);
Der Pfad wurde nur einmal überprüft, und wenn die Datei nicht gefunden wurde, wurde die Anforderung an die nächste Middleware weitergeleitet.
Update für Connect 2.x.
Links zu Code sind für Connect 2.x inaktiv, aber die Verwendung mehrerer statischer Middleware ist nach wie vor möglich.
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