ReadStream错误事件不包括堆栈跟踪?

时间:2017-12-13 14:38:19

标签: node.js

这可能是一个愚蠢的问题。但我无法找到相关信息。我很惊讶地看到以下代码没有提供堆栈跟踪。

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

0 个答案:

没有答案