我试图弄清楚如何正确处理反应流的错误。假设里面有一个错误<App />
。捕获错误的最佳方法是什么?catch 块似乎没有捕获错误,因为当我在<App />
组件内抛出错误时,它不会 console.log 任何内容。我尝试添加stream.on('error', (err) => {console.log(err)});
,但也没有发现错误。我应该如何在服务器端的 App 中捕获错误?
try {
const header = <div>Hello</div>
const footer = <div>Bye</div>
const sheet = new ServerStyleSheet();
const jsx = sheet.collectStyles(<App />);
const stream = sheet.interleaveWithNodeStream(renderToNodeStream(jsx));
ctx.body = multi_stream([
string_stream(header),
stream,
string_stream(footer)
]);
} catch (err) {
console.log('There is an error', err);
ctx.throw(err.status, 'Failed to SSR');
}