[node.js] fs.readFileSync가 파일에 상대적이지 않습니까? Node.js

-내 프로젝트의 루트에 “file.xml”이라는 파일이 있다고 가정합니다.

-테스트 파일에 “test.js”라는 테스트 파일이 있고

const file = fs.readFileSync("../file.xml");

이제 node ./tests/test.js프로젝트의 루트에서 실행하면 ../file.xml이 존재하지 않는다고 표시됩니다. 테스트 디렉토리 내에서 동일한 명령을 실행하면 작동합니다.

fs.readFileSync는 스크립트가 실제로있는 위치가 아니라 스크립트가 호출 된 디렉토리에 상대적인 것 같습니다. fs.readFileSync("./file.xml")test.js로 작성하면 더 혼란스러워 보이고 파일 상대 인 require 문에서 상대 경로와 일치하지 않습니다.

왜 이런거야?

fs.readFileSync에서 경로를 다시 작성하지 않으려면 어떻게해야합니까?



답변

다음을 사용하여 현재 디렉토리가 아닌 소스 파일의 위치와 관련된 경로를 확인할 수 있습니다 path.resolve.

const path = require("path");
const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));


답변