Programing

node.js Express 프레임 워크에서 두 개의 다른 정적 디렉토리 설정

lottogame 2020. 9. 4. 08:00
반응형

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

참고URL : https://stackoverflow.com/questions/5973432/setting-up-two-different-static-directories-in-node-js-express-framework

반응형