Angular 2 Universal 404 Not Found 重定向
Posted
技术标签:
【中文标题】Angular 2 Universal 404 Not Found 重定向【英文标题】:Angular 2 Universal 404 Not Found redirection 【发布时间】:2017-06-23 08:47:18 【问题描述】:我正在实现一个路由保护(CanActivate 接口),我需要在某些情况下重定向到未找到的页面。这可以通过以下语句来实现:
if (isNode)
let res : Response = Zone.current.get('res');
res.status(404).redirect('/not-found');
else
this.router.navigate(['not-found']);
这可行,但会引发服务器端异常(错误:发送后无法设置标头),因为无论重定向如何,angular2-universal 仍会发送呈现的页面。
有什么办法可以正确解决这个问题吗?
提前致谢。
【问题讨论】:
在调用重定向之前,是否有任何代码可以输出一些东西? 您找到解决方案了吗? 【参考方案1】:其实有一个绕过错误的解决方案。
在server.ts
中的res.render
方法中添加回调函数并检查res.headersSent
布尔值。
server.get('*', (req, res) =>
res.render('../public/index.html', req, res,
(error, html) =>
if(error)
// error handle
if (!res.headersSent)
res.send(html);
);
);
显然,仅当 res.headersSent
为 false 时才发送 html。
【讨论】:
以上是关于Angular 2 Universal 404 Not Found 重定向的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2 Universal - 使用手写笔和 pug 模板的服务器端渲染
Angular 8 Universal Build 在 SCSS 导入上失败
将 Angular 2/3/4/5/6 项目转换为 Angular Universal
Angular 2 Universal ng2-bootstrap 不工作 Safari