当使用Electron时,我应该如何配置Angular 2的base href?

27
我需要在 Angular 2 中设置 <base> 或者在启动时设置 APP_BASE_HREF,否则会抛出异常。如果我设置其中任何一个,那么 Electron 在尝试匹配路由时(以文件系统的角度思考)会在 browser_adapter.ts 中抛出异常:

EXCEPTION: Error: Uncaught (in promise): Cannot match any routes. Current segment: 'C:'. Available routes: ['/dashboard', '/accounts'].

我尝试仅使用此博客文章中提到的 HashLocationStrategy,但是 Angular 仍然抱怨没有设置基本的 href。

7
我不知道什么是电子,但可以试试在点号后面加上<base href="./"> - Abdulrahman Alsoghayer
@Abdulrahman 对于不知道什么是 Electron 的人来说,这个答案对我很有用。我拿了 angular2-tour-of-heros 应用程序并添加了一个 electron main.js,但必须更改为 base = ./ 才能使其正常工作。谢谢。 - DavidC
对我也起作用了 - @Abdulrahman,我可以建议您将此作为正确答案提供吗?我很乐意给您投票! - Christian Rondeau
2个回答

40

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

<base href="./">

6
有人知道为什么这不是默认设置吗?没有一个种子使用./作为基本href。你何时需要硬编码的基本路径呢? - Rick Strahl
1
在这个配置中,遇到了无法正确解析惰性加载路由的问题。 - cgatian
4
当路由从地址栏直接加载时,在许多情况下,这种方法是不起作用的。 - ChrisGeo
2
这个对于DOM路径是有效的,但是我正在CSS中设置背景图片。 在这里,图片文件路径未找到并触发了错误,例如 GET file:///icon/png/icon.png net :: ERR_FILE_NOT_FOUND - Nishchit
4
将基本 href 设置为 ./ 会破坏使用多级深度路径的直接 URL 路由,例如 http://localhost:4200/foo/bar。当从应用程序内导航到路径时,仍然可以正常工作,但是如果出现问题,你会花费很长时间才能找到原因。请将其保留为 / - bvdb
显示剩余3条评论

5
以一种清晰的方式,您只能自定义构建命令,而不编辑您的index.html页面中<base href="/">的值。
ng build --prod --base-href=./

请注意:--prod现在已经被弃用,但--base-href=./仍然有效。 - kevstev01

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