gpt4 book ai didi

node.js - 防止 Angular 6 路由器覆盖 Express Server 中定义的路由

转载 作者:行者123 更新时间:2023-12-01 13:19:32 27 4
gpt4 key购买 nike

如何防止 Angular 路由干扰来自 Express Node 服务器的路由?

我正在我的 Express 服务器中设置一些路由(到 node-RED 中间件):

服务器.js

    // Serve the editor UI from /red
app.use(settings.httpAdminRoot,RED.httpAdmin);

// Serve the http nodes UI from /api
app.use(settings.httpNodeRoot,RED.httpNode);

// Angular DIST output folder
app.use(express.static(path.join(__dirname, 'dist')));

// Send all other requests to the Angular app
app.get('*', (req, res) => {

res.sendFile(path.join(__dirname, 'dist/index.js'));
});

但在我的路由器模块中,它们总是被覆盖(我们没有默认路径重定向)

路由.module.ts

const appRoutes: Routes = [
{
path: "example-page",
loadChildren: "../modules/example/example.module#ExampleModule?sync=true"
},
// Last routing path specifies default path for application entry
/* {
path: "**",
redirectTo: "/example-page",
pathMatch: "full"
},*/
];

我只提供这个小代码因为我想问一般我如何防止 Angular 干扰 Express 服务器中定义的路由以及在 Express 中路由的最佳实践是什么/Node.js + Angular + AspNetCore + Webpack 应用程序。

最佳答案

如果您使用的是 Angular,则让 Angular 处理所有页面。此代码会处理此问题,因此 Angular 会处理所有路由。

app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.js'));
});

如果你想让 express 处理某些路由而不是 angular,请在处理 angular 路由之前处理该路由,如下所示:

app.get('/some-non-angular-path', (req, res) => {
//code to handle this path. once it is handled here, angular won't be involved
//non-angular-paths should come first in the order
});
app.get((req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.js'));
});

关于node.js - 防止 Angular 6 路由器覆盖 Express Server 中定义的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50962826/

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