언뜻보기에는 내가 읽는 스트림에 실제로 연결하지 않았다고 생각합니다.
이
The readable.pipe() method returns a reference to the destination stream making it possible to set up chains of piped streams
가 대상 스트림을 통해 오류가 아니므로 오류 콜백이 호출되지 않습니다 :
는 Stream.pipe() 설명서를 참조하십시오.
시도 :
module.exports = (fileName, res) => {
fs.createReadStream(fileName)
.on('error', err => {
console.log('==========>> ERROR : ' + err.message);
res.statusCode = 500;
res.end('Internal Server Error: 500');
})
.on('end', res.end)
.pipe(res);
};
... 또는 (명확하고 더 undestandable) :
이
module.exports = (fileName, res) => {
var iStream = fs.createReadStream(fileName);
iStream.on('error', err => {
console.log('==========>> ERROR : ' + err.message);
res.statusCode = 500;
res.end('Internal Server Error: 500');
});
iStream.on('end', res.end);
var oStream = iStream.pipe(res) // returns refernce to the output stream (actually res);
};
이 ... 반면에, 나는 확실하지 않다 스트림이 실제로 생성 될 경우 파일이 존재하지 않는 경우. 아마 fs.createReadStream()
자체
실제로 그렇게 스트림을 생성 전에 오류 를 던질 것이다, 이런 이유로, 당신은 아마 그것은 try {...} catch(){...}
블록에 묶어야한다.
어쨌든 나는 그것에 대해 확실하지 않습니다. createReadStream()이 파일을 열기 전에 스트림을 만든 다음 파일이 실제로 존재하지 않는 경우 (스트림을 통해) 오류가 발생하면 (코딩 관점에서) 더 편리 할 것입니다. 그러나 이것은 이전에 조사되거나 테스트되어야합니다.
오류의 해당 지점에 도달하지 못했기 때문에 원래 문제는 fileName과 같습니다. 코드의 해당 부분에서 충돌이 발생합니다. 즉, ERROR :가 호출되지 않습니다. – Roberrrt