VS code로 작업을 하다 no such file or directory 에러가 발생하였다.
const fs = require('fs');
let input = fs.readFileSync('./input.txt', 'utf8');
console.log(input);
이 에러가 발생한 시점은 아래의 이미지에서 BOJ탐색기에 inoutExample 폴더를 생성하고 BOJ탐색기에 직접 존재하던 input.js와 input.txt파일을 inoutExample폴더에 옮기면서 발생하였다. 분명 같은 폴더에 있음에도 오류가 발생하였다.
구글링을 해본 결과
- 작업영역을 추가/변경 (import os, os.getcwd) - typescript 필요
- 오타수정
크게 두가지의 방법이 나와있었다. 그러나 내가 발생한 에러의 경우에는 위의 방법으로는 해결되지 않았다.
그러다 하단의 콘솔창을 보게 되었는데 파일을 inoutExample폴더에 옮겼음에도 불구하고
C:\Users\BONO\Documents\GitHub\BOJ>
이와같이 BOJ폴더에 위치가 잡혀있었다. 혹시나 해서 readFileSync의 파일경로를 다시 지정해보았다.
const fs = require('fs');
let input = fs.readFileSync('./inoutExample/input.txt', 'utf8');
위와같이 파일경로를 지정해주니 정상적으로 input.txt파일을 찾아서 읽을 수 있었다.
왜 이런 현상이 발생했는지 예상해보면
- 파일을 inoutExample 폴더에 옮겼음에도 불구하고 탐색기 UI에서만 그렇게 보일 뿐, 실제로는 옮겨지지 않았다.
- 파일은 옮겨졌지만 프로젝트의 경로가 BOJ로 잡혀있어서 경로설정이 잘못되었다.
두가지로 생각해 볼 수 있다.
./은 현재폴더를 가리키므로 input.js는 BOJ폴더에 그대로 들어있다는 것을 알수있다.
이를 뒷받침해주는 것이, BOJ폴더에 input.txt를 다시 옮겨주면 ./input.txt로 경로설정해도 에러가 발생하지 않는다.
그러나 1번의 이유 또한 정확하지는 않은 것이, 출력창에서는 분명
또한'./input.txt'를 그대로 쓰면서 vscode상의 환경설정에서 설정하는 방법이 있나 찾아봤지만 해당 방법은 찾아볼 수 없었다..
찾게되면 이 글을 업데이트 하자.
22.1.6 추가
생각해 본 결과, input.js과 input.txt파일은 inoutExample폴더에 들어가 있지만 작업영역 자체는 BOJ로 잡히는 것 같다.
따라서 경로를 입력하는 ./의 경우에도 현재폴더인 BOJ를 가리키는 것이다.
'바닐라코딩 사전학습 > 추가공부 및 부가설명' 카테고리의 다른 글
절대경로와 상대경로 (0) | 2022.01.08 |
---|---|
백준 알고리즘에서 자바스크립트로 문제풀기 (0) | 2022.01.06 |
JavaScript 와 Node.js (0) | 2021.12.31 |
메모리 주소는 무슨 타입일까? (0) | 2021.12.27 |
크롬 콘솔모드에서 let변수만 재선언이 되는 이유 (0) | 2021.12.24 |