Angular 4 ng build base-href duplicate subdirectory Angular 4 ng build 基础目录重复子目录

8

我正在将Angular应用程序的构建部署到S3存储桶中的不同子目录中,这些目录基于分支名称。 URL看起来像:

pr.example.com/add-cool-spinner
pr.example.com/increase-awesomeness

如果我使用--base-href /add-cool-spinner进行部署,它会正确更新基础标签:<base href="add-cool-spinner">。但是,在重定向或生成链接时,子目录会翻倍,因此从路由器生成的链接标签看起来像这样:

pr.example.com/add-cool-spinner/add-cool-spinner/page

我尝试仅更改--deploy-url,但这样不会更新基础href标签,并引用根URL(pr.example.com/page)。

有没有什么提示可以避免重复使用基础URL目录?这是一个错误还是我做错了什么?

3个回答

23

事实证明,这并没有得到很好的记录,但是Angular需要前置和尾随斜杠。因此,请使用以下部署:

ng build --base-href /add-cool-spinner/

它仍然不能正确引用图像标签中的图片,这可能是由于构建器中已知的错误导致的。

事实上,我们从 --base-href en--base-href en/ 改为 /en/,然后它就开始工作了。谢谢!我只是想知道,在 ng build 中为什么会出现这种情况。例如,为什么他们不自动更正或报告为错误/警告。有任何想法吗? - KarolDepka
1
在 Angular 8 中仍然需要这个。 - Tom Robinson
2
对我没用。添加尾随斜杠会使Angular在本地路径中查找静态文件,例如 C:/Documents/styles.scss - ojathelonius
2
这在 Angular 11 中仍然需要。 - KBeDev

0
原来在路径前加上斜杠可以解决这个问题,但是对于大多数终端来说,它只会指向你的本地 bash 根目录。为了解决这个问题,只需在路径后面加上斜杠即可。
 ng build --base-href "apppath/"

并在 index.html 文件开头添加一个斜杠

<base href="/apppath/">

我不确定我们如何使用这个解决方法自动化构建过程

更新

ng build --base-href "."

在我的情况下似乎有效


0

刚遇到这个问题,在 index.html 中加入了 <base href="/">
然后使用 ng build --base-href="/mypath/" 进行构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接