我的Angular Universal App(v8.1.1)出现了一个奇怪的问题。
在通用存储库中看不到任何相关的当前或过去的问题。
我的代码的一个简单示例:
路线:
import express from 'express'
import { Server } from "http";
declare global {
namespace Express {
interface Application {
__listener: Server
}
}
}
const app = express();
app.__listener = app.listen();
组件:
export const routes = [
{
path: '',
component: ParentComponent,
children: [
{
path: ':routeParam',
component: ChildComponent
}
]
}
];
server.ts:
...
export class ChildComponent {
id: string;
constructor( private route: ActivatedRoute ) {
this.id = this.route.snapshot.params[ 'routeParam' ]; // get unexpected values eg. favicon.ico
}
}
通过浏览器渲染时,动态路由(带有参数)可以正常工作,但在“服务器端渲染”时则不能。
超时和中断。
服务器端渲染时,它接收...
app.set('view engine', 'html');
app.set('views', join(DIST_FOLDER, 'browser'));
app.get('*.*', express.static( join(DIST_FOLDER, 'browser') ) );
app.get('*', (req, res) => {
res.render('index', { req, res });
});
和favicon.ico
作为bg.svg
值(以及预期的字符串值)。
这些文件是从domain / assets / ..文件夹提供的资产。
所以我不明白它们如何到达组件路径参数。
我做错了什么?
答案 0 :(得分:0)
从快递serve static middleware documentation
当未找到文件时,此模块将不发送404响应,而是调用next()移至下一个中间件,
我认为Express由于某种原因找不到静态文件favicon.ico
和bg.svg
,因此它调用了下一个中间件,该中间件由有角度的应用程序及其路由处理。
确保dist \ browser文件夹包含您要查找的文件。如果有,请尝试从angular调用这些文件时检查这些文件的相对路径