답변:
다음 use()
과 같이 추가 (첫 번째) 매개 변수를 지정하여 정적 파일이 웹에 제공되는 경로를 설정할 수도 있습니다 .
app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));
이렇게하면 두 로컬 디렉터리간에 장애 조치되는 하나의 URL 경로가 아니라 로컬 디렉터리를 미러링하는 두 개의 다른 디렉터리를 웹에서 얻을 수 있습니다.
즉, URL 패턴 :
http://your.server.com/public/*
다음과 같은 public
동안 로컬 디렉토리에서 파일을 제공합니다 .
http://your.server.com/public2/*
로컬 디렉토리에서 파일을 제공합니다 public2
.
BTW 이것은 또한 정적이 서버의 루트에서 파일을 제공하지 않고 더 정규화 된 경로에서 제공하는 것을 원하지 않는 경우에도 유용합니다.
HTH
"homepage": "/public"
하고 "homepage": "/public2"
각 앱의 package.json 반응에. 두 반응 앱 사용에 대한 자세한 내용은 여기 내 대답을 참조하십시오. stackoverflow.com/a/48569896/4746648
shared
당신이 사용할 수 있도록 폴더를 "./"
하고 "./shared"
3 감사합니다 : 당신 쉽게 공유 JS 파일 붐
디렉토리를 하나의 보이는 디렉토리로 "병합"할 수도 있습니다.
디렉토리 구조
/static
/alternate_static
암호
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
static 및 alternate_static은 모두 동일한 디렉토리에있는 것처럼 제공됩니다. 그러나 파일 이름 클로버를 조심하십시오.
main.js
에서 볼 경우 static/
계속 검색하지 않습니다 alternate_static/
.
alternate_static
이 제공되기를 기대했다면 여전히 엉망 입니다.
한 번의 미들웨어 주입으로는 불가능하지만 static
미들웨어를 여러 번 주입 할 수 있습니다 .
app.configure('development', function(){
app.use(express.static(__dirname + '/public1'));
app.use(express.static(__dirname + '/public2'));
});
설명
에서 봐 연결 / lib 디렉토리 / 미들웨어 / static.js # 143 :
path = normalize(join(root, path));
이 options.root
당신이 정의하는 정적 루트이며, express.static
또는 connect.static
전화, 그리고 path
요청의 경로입니다.
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);
경로를 한 번만 확인하고 파일을 찾을 수없는 경우 요청이 다음 미들웨어로 전달됩니다.
Connect 2.x 업데이트
코드에 대한 링크는 Connect 2.x에 대해 실제적이지 않지만 여러 정적 미들웨어 사용은 이전과 같이 여전히 가능합니다.
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