Node.js에서 fs.readFile, fs.readFileSync 사용시 발생 에러

발생 에러

Node.js에서 readFile()이나 readFileSync() 메서드를 사용해서 파일을 읽어오려고 할 때,
ENOENT: no such file or directory 에러가 발생했다.

const data = fs.readFileSync('../public/temp.txt', "utf-8");

---
node:fs:448
    return binding.readFileUtf8(path, stringToFlags(options.flag));
                   ^

Error: ENOENT: no such file or directory, open '../public/temp.txt'


이유

경로 설정이 상대경로로 잘못 설정되어 파일을 찾지 못하는 에러다.
fs.readFile() 이나 fs.readFileSync() 메서드는
상대경로(../public/temp.txt, ./temp.txt)가 아니라 절대경로(public/temp.txt, temp.txt)를 사용해야 한다.


해결 방법

절대경로를 사용해서 파일을 적는다.

폴더 구조
📦public
 ┗ 📜temp.txt // 읽고싶은 파일
📦src
 ┣ 📜App.js // 파일 읽어오려는 위치
 ┗ 📜index.js // 애플리케이션 진입점

위와 같은 폴더 구조라고 할 때,
App.js 파일에서 코드를 작성중이고, temp.txt 파일을 읽고 싶으면 public/temp.txt로 적는다.

const DATA = fs.readFileSync('public/temp.txt', "utf-8");

Categories:

Updated:

Leave a comment