【问题标题】:How should I configure the base href for Angular 2 when using Electron?使用 Electron 时,我应该如何配置 Angular 2 的基本 href?
【发布时间】:2016-09-12 22:44:28
【问题描述】:

我需要在 HTML 中设置 <base> 或在引导期间设置 APP_BASE_HREF 以使 Angular 2 不会引发异常。如果我设置了其中任何一个,那么Electron,考虑到文件系统,在尝试匹配路由时会在browser_adapter.ts 中引发异常:

异常:错误:未捕获(承诺中):无法匹配任何路由。 当前段:'C:'。可用路由:['/dashboard', '/accounts']。

我尝试只使用this blog post 中提到的HashLocationStrategy,但 Angular 仍然抱怨未设置基本 href。

【问题讨论】:

  • 我不知道电子是什么,但试试<base href="./"> 带点。
  • @Abdulrahman 对于不知道电子是什么的人,这个答案对我有用。我使用了 angular2-tour-of-heros 应用程序并添加了一个电子 main.js,但必须更改为 base = ./ 才能使其正常工作。谢谢。
  • 也为我工作 - @Abdulrahman 我可以建议你提供这个作为正确答案吗?我很乐意为你投票!

标签: typescript angular electron angular2-routing


【解决方案1】:

由于href 属性可以采用相对路径,并且感谢cmets 中的@DavidC 和@ChristianRondeau 进行验证,它应该像这样工作:

<base href="./">

【讨论】:

  • 所以有人知道为什么这不是默认设置吗?没有一个种子使用./ 作为基本href。您什么时候需要硬编码的基本路径?
  • 遇到延迟加载路由无法通过此配置正确解决的问题
  • 当直接从地址栏加载路由时,很多情况下这不起作用
  • 这适用于 DOM 路径,但我在 CSS 中设置背景图像。在这里找到图像文件路径注释并触发错误,例如 GET file:///icon/png/icon.png net::ERR_FILE_NOT_FOUND
  • 将基本 href 设置为 ./ 会破坏使用直接 url 的路由,到多级深度的路径。例如http://localhost:4200/foo/bar。您需要很长时间才能找到答案,因为从您的应用程序中导航到这些路径时仍然可以正常工作。将此保留为/
【解决方案2】:

以一种简洁的方式,您只能自定义构建命令,而无需在 index.html 页面中编辑 &lt;base href="/"&gt; 的值

ng build --prod --base-href=./

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 2017-10-30
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2016-12-07
    • 2023-03-18
    相关资源
    最近更新 更多