fs.readFileSync ()에 대한 파일을 캡처하지 않는 방법은 무엇입니까?
node.js 내에서 readFile () 은 오류를 캡처하는 방법을 보여 주지만, 오류 처리에 관한 readFileSync () 함수에 대한 주석은 없습니다 . 따라서 파일이 없을 때 readFileSync ()를 사용하려고하면 오류가 발생 Error: ENOENT, no such file or directory
합니다.
발생하는 예외를 어떻게 캡처합니까? doco는 어떤 예외가 발생했는지 명시하지 않으므로 어떤 예외를 포착해야하는지 모르겠습니다. try / catch 문의 일반적인 '모든 가능한 예외 예외 처리'스타일을 좋아하지 않습니다. 이 경우 파일이 존재하지 않을 때 발생하는 특정 예외를 포착하고 readFileSync를 수행하려고합니다.
연결 시도를 제공하기 전에 시작시에만 동기화 기능을 수행하므로 동기화 기능을 사용해서는 안되는 의견은 필요하지 않습니다.
기본적으로 fs.readFileSync
파일을 찾을 수 없으면 오류가 발생합니다. 이 오류는 Error
프로토 타입에서 발생하며를 사용하여 발생 throw
하므로 catch하는 유일한 방법은 try / catch
블록을 사용하는 것입니다.
var fileContents;
try {
fileContents = fs.readFileSync('foo.bar');
} catch (err) {
// Here you get the error when the file was not found,
// but you also get any other error
}
불행히도 프로토 타입 체인을보고 어떤 오류가 발생했는지 감지 할 수 없습니다.
if (err instanceof Error)
할 수있는 최선의 방법이며 대부분의 오류에 해당됩니다. 따라서 나는 당신이 그 code
속성으로 가서 그 가치를 확인 하는 것이 좋습니다 .
if (err.code === 'ENOENT') {
console.log('File not found!');
} else {
throw err;
}
이 방법으로이 특정 오류 만 처리하고 다른 모든 오류를 다시 발생시킵니다.
또는 오류 message
속성에 액세스 하여 자세한 오류 메시지를 확인할 수도 있습니다. 이 경우 다음과 같습니다.
ENOENT, no such file or directory 'foo.bar'
도움이 되었기를 바랍니다.
수용 된 솔루션은 괜찮지만이를 처리하는 더 좋은 방법을 찾았습니다. 파일이 동기식으로 존재하는지 확인할 수 있습니다.
var file = 'info.json';
var content = '';
// Check that the file exists locally
if(!fs.existsSync(file)) {
console.log("File not found");
}
// The file *does* exist
else {
// Read the file and do anything you want
content = fs.readFileSync(this.local, 'utf-8');
}
오류를 파악한 다음 어떤 유형의 오류인지 확인해야합니다.
try {
var data = fs.readFileSync(...)
} catch (err) {
// If the type is not what you want, then just throw the error again.
if (err.code !== 'ENOENT') throw err;
// Handle a file-not-found error
}
이 시나리오에는 즉시 호출 된 람다를 사용합니다.
const config = (() => {
try {
return JSON.parse(fs.readFileSync('config.json'));
} catch (error) {
return {};
}
})();
async
버전:
const config = await (async () => {
try {
return JSON.parse(await fs.readFileAsync('config.json'));
} catch (error) {
return {};
}
})();
참고 URL : https://stackoverflow.com/questions/14391690/how-to-capture-no-file-for-fs-readfilesync
'developer tip' 카테고리의 다른 글
자바 퍼시스턴스 / JPA : @Column vs @Basic (0) | 2020.07.25 |
---|---|
LINQ to SQL로 CROSS JOIN을 어떻게 수행합니까? (0) | 2020.07.25 |
"스페셜 클래스"란 정확히 무엇입니까? (0) | 2020.07.25 |
SQLALCHEMY_TRACK_MODIFICATIONS를 비활성화 할 수 있는지 어떻게 알 수 있습니까? (0) | 2020.07.25 |
도커 로그인 알 수없는 속기 플래그 : 'e' (0) | 2020.07.25 |