gpt4 book ai didi

node.js - Angular2 和 Express

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:25 26 4
gpt4 key购买 nike

我正在使用 Angular2 应用程序和 Express。

我有这个 url /v2/tickets?filterId=321。重新加载页面后,url 会更改为 /v2/tickets/?filterId=321。这会破坏我的 Angular2 路由。

在 chrome 网络调用中,我看到抛出 301。

这是我的简单服务器配置:

app.use('/v2', express.static(path.join(__dirname + '/dist')));
app.use('/v2/*', express.static(path.join(__dirname + '/dist')));

任何想法,为什么会发生这种重定向,我该如何阻止它?

最佳答案

出现该redict是因为该redict是serve-static中的默认值.您可以使用 express.static('dir', { redirect: false }) 禁用它但随后找不到/v2/tickets 并返回 404。例如express-static 具有相同的行为。

你有一个基础集吗(比如 <base href="/v2"> ),并为所有这不是你的 api 路由的东西返回 index.html

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

因为我不知道这如何与您发布的代码一起使用。

除此之外,如果您不使用 url 参数,则 redict 不会成为问题,因为 angular 会自动删除结尾的斜线。如果/v2/tickets/321 也可以工作,这将是最简单的解决方案,而且 url 更美观。
如果您需要 url 参数并想使用 express 和 serve-static,也许在路由中的路径中添加尾部斜杠会更容易。

我个人更喜欢静态文件的 nginx,因为它更快,有更好的缓存,更多选项,...并将所有 api 请求转发到类似 Node

location /api {
proxy_pass http://api;
}

location / {
try_files $uri /index.html;
}

关于node.js - Angular2 和 Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535032/

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