fs.readFileSync는 파일 상대적이지 않습니까?Node.js
프로젝트의 루트에 다음과 같은 파일이 있다고 가정합니다.file.xml
.
내가 tests/"test.js"라는 테스트 파일을 가지고 있고 그것은
const file = fs.readFileSync("../file.xml");
지금 달려가면node ./tests/test.js
나의 프로젝트의 근본에서 그것은 말합니다.../file.xml
존재하지 않습니다.테스트 디렉토리 내에서 동일한 명령을 실행하면 작동합니다.
그런 것 같습니다.fs.readFileSync
는 스크립트가 실제로 있는 위치가 아니라 스크립트가 호출된 디렉토리에 상대적입니다.내가 쓴다면fs.readFileSync("./file.xml")
인에test.js
그것은 더 혼란스러워 보일 것이고 a의 상대적인 경로와 일치하지 않습니다.require
파일 상대인 문.
왜 이러한가?어떻게 하면 내 경로를 다시 쓸 필요를 피할 수 있을까요?fs.readFileSync
?
현재 디렉토리가 아닌 원본 파일의 위치에 관련된 경로를 다음을 사용하여 확인할 수 있습니다.
const path = require("path");
const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));
위의 내용을 확장하자면, 만약 당신이 fs.readFileSync를 TypeScript와 함께 사용하고 있다면 (물론 일반적입니다.JS) 구문은 다음과 같습니다.
import fs from 'fs';
import path from 'path';
const logo = fs.readFileSync(path.resolve(__dirname, './assets/img/logo.svg'));
왜냐하면fs.readFileSync()
현재 작업 디렉토리에 상대적으로 해결되었습니다. 자세한 내용은 Node.js 파일 시스템 문서를 참조하십시오.
출처: relative fs.readFileSync paths with Node.js
그리고 물론 커먼은JS 형식:
const fs = require('fs');
const path = require('path');
const logo = fs.readFileSync(path.resolve(__dirname, './assets/img/logo.svg'));
다음을 사용하는 경우 또 다른 대안이 있습니다.type module
사용하는 것입니다process.cwd()
꾸러미의json
{
"type": "module",
}
console.log(process.cwd() + relative_path) // /User/your_user/path_to_folder
언급URL : https://stackoverflow.com/questions/44600943/fs-readfilesync-is-not-file-relative-node-js
'programing' 카테고리의 다른 글
동일한 신호에 대해 여러 개의 신호 처리기를 갖는 것이 유효합니까? (0) | 2023.09.24 |
---|---|
Python 클래스에서 __init__를 사용하는 이유는 무엇입니까? (0) | 2023.09.24 |
매개 변수에 공백이 있을 때 파워셸에서 msdeploy를 어떻게 부르나요? (0) | 2023.09.24 |
"addClass" 전에 "hasClass"를 사용해야 합니까? (0) | 2023.09.24 |
C 연산자 /\ 및 \/가 수행한 작업은 무엇입니까? (0) | 2023.09.24 |