node.js Express 프레임 워크에서 두 개의 다른 정적 디렉토리 설정
가능할까요? 정적 파일을 제공하기 위해 두 개의 다른 디렉토리를 설정하고 싶습니다. / public 및 / mnt라고 가정하겠습니다.
다음 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
디렉토리를 하나의 보이는 디렉토리로 "병합"할 수도 있습니다.
디렉토리 구조
/static
/alternate_static
암호
app.use("/static", express.static(__dirname + "/static"));
app.use("/static", express.static(__dirname + "/alternate_static"));
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
'Programing' 카테고리의 다른 글
해결 방법 : "http://java.sun.com/jsp/jstl/core"에 대한 태그 라이브러리 설명자를 찾을 수 없음 [중복] (0) | 2020.09.04 |
---|---|
빈 플롯을 그리는 방법? (0) | 2020.09.04 |
자바 스크립트 캔버스 라이브러리의 현재 상태? (0) | 2020.09.04 |
확인 표시를위한 HTML 엔티티 (0) | 2020.09.04 |
SQL : 접두사가있는 테이블 삭제 (0) | 2020.09.04 |