gpt4 book ai didi

javascript - Angular 4 + Universal - 在 header for/404 页面组件中发送状态代码 404

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

在搜索和解决几个 StackOverflow 问题时,我得到的是: header 来自服务器提供的响应,所以这不是问题。

所以决定从 server.ts 文件中解决它,但找不到任何线索。

下面是我的 server.ts 文件,任何帮助都会让我摆脱这个卡住的过程。

import 'reflect-metadata';
import 'zone.js/dist/zone-node';
import { platformServer, renderModuleFactory } from '@angular/platform-server'
import { enableProdMode } from '@angular/core'
import { AppServerModuleNgFactory } from '../dist/ngfactory/src/app/app.server.module.ngfactory'
import * as express from 'express';
import { readFileSync } from 'fs';
import { join } from 'path';

const PORT = process.env.PORT || 4000;

enableProdMode();

const app = express();

let template = readFileSync(join(__dirname, '..', 'dist', 'index.html')).toString();

app.engine('html', (_, options, callback) => {
const opts = { document: template, url: options.req.url };

renderModuleFactory(AppServerModuleNgFactory, opts)
.then(html => callback(null, html));
});

app.set('view engine', 'html');
app.set('views', 'src')

app.get('*.*', express.static(join(__dirname, '..', 'dist')));

app.get('*', (req, res) => {
res.render('index', { req });
});

app.listen(PORT, () => {
console.log(`listening on http://localhost:${PORT}!`);
});

最佳答案

您可以将 Providers 传递给 renderModuleFactory 方法(参见 Angular docs)。

通过这种方式,您可以将请求和响应对象注入(inject) Angular 应用程序。 This post例如很好地解释了这种方法。

然后,在您的 404 组件中,如果您在服务器端,您可以获得响应对象并设置 404 状态。

关于javascript - Angular 4 + Universal - 在 header for/404 页面组件中发送状态代码 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419539/

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