gpt4 book ai didi

javascript - Node.js createReadStream 错误处理

转载 作者:行者123 更新时间:2023-11-30 20:21:48 27 4
gpt4 key购买 nike

我正在运行一个 SSR React node.js 服务器,我需要一些关于如何解决我的问题的建议。我的 node.js 服务器崩溃/重新启动错误,如窗口未定义等,而不是仅仅记录并打印出 500 错误消息。

这是我的直播:

  try {
.......
.......
.......

const markupStream = renderToNodeStream(
<Provider store={store}>
<ConnectedRouter history={history} location={context}>
<App/>
</ConnectedRouter>
</Provider>
);

if (context.url) {
return res.redirect(301, context.url)
}

return fs.createReadStream(htmlFilePath)
.pipe(htmlReplace('#root', markupStream))
.pipe(replaceStream('__SERVER_DATA__', serialize(store.getState())))
.pipe(res);
} catch (err) {
const errMarkup = renderToNodeStream(
<Provider store={store}>
<ConnectedRouter history={history} location={context}>
<Error500 error={err}/>
</ConnectedRouter>
</Provider>
);

logger.log({
level: 'error',
message: `Rendering ${req.originalUrl} fallback to Error render method`,
...{
errorMessage: err.message,
stack: err.stack
}
});

return fs.createReadStream(htmlFilePath)
.pipe(htmlReplace('#root', errMarkup))
.pipe(res.status(500));
} finally {
logger.info(`Request finished ${req.originalUrl} :: ${res.statusCode}`)
end({ route: path, componentName: componentNames[0], code: res.statusCode })
logger.profile(profileMsg);
}

我以为我的 catch 会出现这些错误,但显然不会,有人可以帮我指出正确的方向吗?

更新:1我目前正在尝试:

const readStream = fs.createReadStream(htmlFilePath);

// Should hopefully catch the errors
readStream.on('error', function(err) {
res.end(err);
});

return readStream.pipe(htmlReplace('#root', markupStream))
.pipe(replaceStream('__SERVER_DATA__', serialize(store.getState())))
.pipe(res);

最佳答案

在返回流之前需要先创建流,以便使用它的错误回调函数:

var readStream = fs.createReadStream(filename);
readStream.on('error', function(err) {
res.end(err);
});
return readStream

关于javascript - Node.js createReadStream 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com