Angular2 和 Express
Angular2 and Express
我正在使用 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')));
任何想法,为什么会发生这种重定向,我该如何防止它?
之所以会出现此错误,是因为此错误是 serve-static 中的默认设置。您可以使用 express.static('dir', { redirect: false })
禁用它,但随后找不到 /v2/tickets 和 returns 404。例如express-static 具有相同的行为。
你有基础集吗(比如 <base href="/v2">
),return index.html 这不是你的 api 路线,比如
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 请求转发到像
这样的节点
location /api {
proxy_pass http://api;
}
location / {
try_files $uri /index.html;
}
我正在使用 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')));
任何想法,为什么会发生这种重定向,我该如何防止它?
之所以会出现此错误,是因为此错误是 serve-static 中的默认设置。您可以使用 express.static('dir', { redirect: false })
禁用它,但随后找不到 /v2/tickets 和 returns 404。例如express-static 具有相同的行为。
你有基础集吗(比如 <base href="/v2">
),return index.html 这不是你的 api 路线,比如
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 请求转发到像
这样的节点location /api {
proxy_pass http://api;
}
location / {
try_files $uri /index.html;
}