상대경로 / 절대 경로
-예시-
pp.set('view engine', 'ejs')
app.set('views', './views')
app.use(bodyParser.urlencoded({ extended: false}))
app.use(express.static(__dirname+'./public'))
Node.js에서 파일 경로를 지정할 때 ./와 /의 차이는 상대 경로와 절대 경로를 나타냅니다. __dirname을 사용할 때에는 주의가 필요합니다. __dirname은 항상 현재 파일의 절대 경로를 나타내므로 이를 사용할 때에는 경로 앞에 ./를 붙일 필요가 없습니다.
⚠️상대 경로의 .(점)은 파일이 실행중인 폴더를 말한다.(npm start 하는 그곳.)
- app.set('views', './views'): 여기서 './views'는 현재 작업 디렉토리에 상대적인 경로를 의미합니다. 즉, Node.js 프로세스가 실행되는 위치에 따라서 views 디렉토리를 찾습니다. 이 코드는 일반적으로 앱의 시작 스크립트가 views 폴더와 같은 위치에 있을 때 잘 동작합니다.
- app.use(express.static(__dirname+'/public')): 여기서 __dirname은 현재 실행 중인 스크립트 파일의 절대 경로를 반환합니다. 따라서 __dirname 뒤에 오는 /public은 절대 경로에 상대적인 경로를 추가하는 것입니다. __dirname+'/public'는 항상 public 디렉토리의 절대 경로를 나타냅니다. 여기서 ./를 사용하는 것은 실수이며, 이는 경로 문자열에 불필요한 점을 추가하는 것이 됩니다.
app.use(express.static('/public'))
static 미들웨어를 사용하여 정적 파일을 서비스할 수 있음.
하지만 아래처럼 절대경로 설정이 필요.
app.use(express.static(__dirname+'/public'))
이 코드를 통해서 어느 폴더를 기준으로 할것인지를 정할 수 있다.
ㅡ>
이 설정으로, 웹 서버의 루트 URL (/)에서 시작하는 모든 요청은 public 폴더 내부에서 파일을 찾게 됩니다.
하지만 절대 경로(__dirname)를 붙여주지 않으면 예상치 못한 오류가 발생할 수 있다.
실습
1. 이미지 경로 찾기 성공
ㅡ> / 라는 경로가 절대 경로가 됨
<%-include('header.ejs')%>
홈페이지에 오신것을 환영합니다.
<img src="/a.jpg" />
<%-include('footer.ejs')%>
2. 이미지 경로 찾기 실패.
<%-include('header.ejs')%>
홈페이지에 오신것을 환영합니다.
<img src="../a.jpg" />
<%-include('footer.ejs')%>
'Web App Project' 카테고리의 다른 글
HTTP 메서드와 데이터를 전송하는 방식[req.query, req.body 차이] (0) | 2024.01.09 |
---|---|
작업 중간완료 후 git으로 프로젝트 관리하기[새 브랜치 생성>이동> 커밋] (0) | 2024.01.09 |
input 폼 및 기본 웹페이지 골조 만들기 [node, express, mysql ] (0) | 2024.01.08 |
예시로 알아보는 get, post / req,res (0) | 2024.01.08 |
초기 개발 세팅 고정(백엔드, 프론트) (0) | 2024.01.08 |