我正在使用ExpressJS的SSR Platform-Server 我想将HTTP状态代码从200更改为404,找不到页面
我创建一个路由对象,如下所示
[
{ path: '', component: HomeComponent },
{ path: '**', component: NotFoundComponent, pathMatch: 'full' }
]
它在客户端工作正常,但我不知道在NodeJS中更改状态代码
我尝试抛出错误并在ExpressJS中处理它
所以在NotFoundComponent中,在OnInit中我抛出一个错误,但是角度捕获错误并再次得到status = 200
任何想法?
答案 0 :(得分:4)
我正在使用@ nguniversal / express-engine
您可以从[快速引擎]向您的应用注入自定义提供商 并且您可以修改渲染结果 你可以处理错误
https://github.com/angular/universal/tree/master/modules/ng-express-engine
但已经注入了请求和响应
https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts#L66
请求和响应是expressjs对象
所以你可以像这样使用它:
import { RESPONSE } from '@nguniversal/express-engine/tokens'
并在您的控制器或服务中
constructor(.... OtherDependencies....., @Optional() @Inject(RESPONSE) private readonly res: any) { }
和你的代码中的某个地方,如ngOnInit
if(this.res) {
this.res.status(404)
}
如果你想停止角度
return this.res.end();
或者您可以在此处添加任何其他有效的ExpressJs res代码