这可能是一个愚蠢的问题。但我无法找到相关信息。我很惊讶地看到以下代码没有提供堆栈跟踪。
try {
const readStream = fs.createReadStream('file-that-does-not-exist');
readStream.on('data', (chunk) => {
console.log(`Received ${chunk.length} bytes of data.`);
});
readStream.on('error', (error) => {
console.log('on error:', error);
});
readStream.on('end', () => {
console.log('end');
});
} catch (error) {
console.log('catch error:', error);
process.exit(1);
}
这导致:
on error: { Error: ENOENT: no such file or directory, open 'file-that-does-not-exist'
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'file-that-does-not-exist' }
据我所知,由于没有要处理的数据,可读性不会调用数据也不会结束。由于没有文件,因此会发出错误事件。我很惊讶错误对象不包括堆栈跟踪。
有谁知道这个的底层原因?我无法在文档中的任何位置找到它。 https://nodejs.org/api/fs.html#fs_class_fs_readstream https://nodejs.org/api/stream.html#stream_class_stream_readable
我知道堆栈跟踪是可选的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error,但堆栈跟踪几乎总是包含在内。
使用Node.js> 9