Angular 4 ng 构建 base-href 重复子目录

Posted

技术标签:

【中文标题】Angular 4 ng 构建 base-href 重复子目录【英文标题】:Angular 4 ng build base-href duplicate subdirectory 【发布时间】:2018-03-21 03:17:36 【问题描述】:

我正在根据分支名称将我的 Angular 应用程序构建部署到具有不同子目录的 s3 存储桶中。网址看起来像:

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 目录有什么提示吗?这是一个错误还是我做错了什么?

【问题讨论】:

【参考方案1】:

事实证明,这并没有很好的记录,但是 angular 期望有一个斜杠和斜杠。所以部署:

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

它仍然没有正确引用图像标签中的图像,这可能是因为构建器中的已知错误。

【讨论】:

确实,我们从 --base-href en--base-href en/ 更改为 /en/ 并开始工作。谢谢!我只是想知道为什么在ng build 会发生这种情况。例如。为什么他们不自动更正它或报告为错误/警告。有什么想法吗? Angular 8 仍然需要这样做。 对我不起作用。添加尾部斜杠使 Angular 在本地路径中查找静态文件,例如C:/Documents/styles.scss Angular 11 仍然需要这样做。【参考方案2】:

原来添加斜线前缀可以解决问题 对于大多数终端来说,它只会指向您的本地 bash 根目录 要解决这个问题,只需使用斜杠构建

 ng build --base-href "apppath/"

并在 index.html 的开头添加一个斜线

<base href="/apppath/">

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

更新

ng build --base-href "."

这似乎对我有用

【讨论】:

以上是关于Angular 4 ng 构建 base-href 重复子目录的主要内容,如果未能解决你的问题,请参考以下文章

使用 --base-href 构建 Angular 库

在 ng build angular 中运行严格编译

Angular 8 ng-build 使用科尔多瓦抛出 MIME 错误

ng build --base-href的设定问题

如何强制 Angular cli 从绝对位置而不是 base-href 提供捆绑文件

ng build throws 无法读取空异常的属性“startTag”