1

いくつかのStackOverflow質問を検索して調べてみましょう。ヘッダーはサーバーによって提供される応答から来ているので、これは問題ではありません。角度4 +ユニバーサル -/404 pagecomponentのヘッダーにステータスコード404を送信

これは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}!`); 
}); 
+0

私の解決策を試しましたか? – Moema

+0

はい、これでもまだまだ立ち往生していますが、私はそれをどのように使うことができるかの例を教えてくれますか? –

答えて

1

あなたは(Angular docsを参照)renderModuleFactory方法にプロバイダを渡すことができます。

このようにして、Angular Appにリクエストとレスポンスオブジェクトを注入できます。例えば、This post。この方法は非常によく説明されています。

次に、404コンポーネントでは、サーバー側であればレスポンスオブジェクトを取得して404ステータスを設定できます。

+0

よろしくお願いします。私はそれを使用する例を教えてください –

関連する問題