更改应用程序的base-href而不更改angular2中地址栏中的URL

时间:2017-03-20 06:40:00

标签: angular angular-cli

我在生产中使用了angular2应用程序。每当我部署我的应用程序的新版本一段时间(由于index.html的缓存)时,旧的index.html被提供,并且由于旧的js文件被新的js文件替换,我的旧js文件出现404错误。 虽然这个问题随着时间的推移而消失,我想要一个angular-cli构建解决方案,这样我就可以将旧文件保存在我的服务器上,并在接下来的2个版本中删除它。

我试过在我的詹金斯做这个, ng build -prod -aot --base-href="/myapp/10.5.0/"

但问题是,每当我部署此应用时,以下文件夹路径都会附加到地址栏网址http://localhost/myapp/10.5.0/

我不想附加要附加到URL的base-href。

在我实现这一点的情况下,我可以拥有许多版本文件夹,旧的(缓存的)index.html将从旧文件夹中提供,并且仍然可以正常运行而不会出现404错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

通过在我的页面加载完成后执行以下内容,我能够完成一个非常相似的目标:

<script type="text/javascript">
window.history.pushState('any-value', 'My Website', '/url/without/base/href');
</script>

所以在你的情况下,这可能是这样的:

<script type="text/javascript">
window.history.pushState('any-value', 'My Website', '/');
</script>

这会更改地址栏中的URL,而不会将用户重定向到任何位置。  我的灵感来自Stack Overflow响应: Modify the URL without reloading the page