반응형
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 |