IT/NodeJS

js.html 확장자가 겹치는 경우 - stockAdmin[project]

KeepGooing 2021. 1. 9. 14:54
반응형

jquery, node, python, mysql, mongodb 을 활용한 개인 프로젝트 도중 관련 이슈를 정리합니다.


Error: ENOENT: no such file or directory, stat 'D:\dev\stockAdmin\UI\public\resources\js\admin\advice.js.html'

에러문구에 적혀있는 경로를 살펴보면 확장자 js, html 혼합되어 관련 경로를 못찾고 있다.

 

1. 우선 결론부터 말하자면

advice.js 파일이 존재하지 않아 생긴 문제(오타)

 

 

2. 원인분석

<script src="/resources/js/admin/advice.js"></script>

 html파일에 수기된 위의 스크립트 코드 경로를 읽은 것으로 판단된다. 

 

원인 파악을 위해 경로 관련 설정 코드를 살펴보자

2-1. static파일(html, css, js) public directory 일괄 설정 

   app.use(express.static(path.join(__dirname, "../public")));

 

(public경로 아래 정적인 파일들끼리 유기적으로 참고 할 수 있도록 설정한 것이다.)

 

2-2. public 라우팅 설정

   router.get('/:root1/:id', (req, res) => {
  
    res.sendFile(path.join(`${appRoot}`, 'public', req.params.root1, `${req.params.id}.html`));
    logger.info(path.join(`${appRoot}`, 'public', req.params.root1, `${req.params.id}.html`));
  
  });

라우팅으로 public 경로를 설정하여 해당하는 html파일을 불러올 수 있도록 설정하였다.

2-3. advice.js 파일 존재여부

사실 오타 기입으로 존재하지 않은 파일이었다.

 

이를 종합했을 때 

node 프로그램은

html 코드 내의 <script> 경로는 static 파일 디렉토리 설정을 우선하여 관련 파일을 탐색하고

해당하는 파일이 없는 경우 

public 경로 라우팅 활용하여 html을 불러오는 것을 알 수 있다.

 

최종 결과

js.html 같이 확장자가 붙여서 나오는 경우 우선 관련 파일이 실제로 존재하는지 확인 후에

존재 한다면 경로 설정과 관련 된 코드를 살펴보자

반응형

'IT > NodeJS' 카테고리의 다른 글

Node.js에서 비동기 함수 최적화 방법  (0) 2024.11.21
Node.js의 비동기 작업 처리 패턴  (0) 2024.11.21
requires elevated privileges 관련 에러  (0) 2021.01.10
Node.js 교과서 목차  (0) 2020.07.11
Node.js  (0) 2019.12.04