我开发了一个教程应用程序,并按照指南将它托管在 gh-pages 上为什么现在路由乱了?

问题描述

应用源代码https://github.com/shardul-shah/first-angular-app

它适用于 gh-pages... 有点 (https://shardul-shah.github.io/first-angular-app/)

问题:

  1. 转到此 https://shardul-shah.github.io/first-angular-app/ 时,URL 会自动更改为 https://shardul-shah.github.io/first-angular-app/first-angular-app/
  2. 刷新 https://shardul-shah.github.io/first-angular-app/first-angular-app/(或任何路线上的任何刷新)导致白色、空白屏幕。
  3. 当我点击 https://shardul-shah.github.io/first-angular-app/first-angular-app/ 中的“我的商店”时,该应用可以正常工作,但如果没有点击,则不行。

我看到了 JS 控制台,我发现我也遇到了路由问题。我可以看到路由存在问题,但我终生无法弄清楚如何修复它。我已经尝试了 4 次使用 ng 和 ng 的 gh-pages 命令行实用程序来重建和保留,但它没有修复它。我对 Angular 和其中的路由缺乏经验很痛苦。

谁能告诉我如何修复此路由,以便应用在 https://shardul-shah.github.io/first-angular-app/ 上正常运行并正常工作?

仅供参考,它适用于我最初在该应用程序上工作的 stackblitz: https://angular-n2rqei.stackblitz.iohttps://stackblitz.com/edit/angular-n2rqei?file=src/app/app.module.ts

谢谢!

GitHub settings (pages)

解决方法

解决方案: 第一个问题的解决方案:

  1. 您可以在 base 的 src/index.html 中再添加一个文件夹。这就是为什么它在这个 url 之后加载所有路由。 (检查屏幕截图)[在 base 中使用 ./ 而不是 github 文件夹或其他任何东西]

enter image description here

第二个问题的解决方案:

  1. 刷新任何路线都会出现页面空白白屏。这是因为你没有在你的角度中使用 useHashStretegy。

  2. 您必须在 Angular 应用程序中使用 useHash 策略,例如:

    RouterModule.forRoot(routes,{ useHash: true })
    

在你这样的情况下:

RouterModule.forRoot([
  { path: '',component: ProductListComponent },{ path: 'products/:productId',component: ProductDetailsComponent },{ path: 'cart',component: CartComponent },{ path: 'shipping',component: ShippingComponent }
],{ useHash: true })

注意:如果您不想在您的网址中使用 Hash(#),那么您必须设置 .htaccess 文件,该文件可以将所有请求重定向(重写网址)到 angular build 的索引中.html 文件。但是github不允许这样做,因此您必须为此使用专用服务器。关于重写规则的更多信息在这里:server configuration

有关此链接的更多信息:https://medium.com/@dao.houssene/angular-the-hash-trap-b2d415c2c241

第三个问题的解决方案

我希望如果您的前两个问题得到解决,那么第三个问题将自动得到解决。

注意:

我也在 github 上使用 angular 设置了这种页面。你可以签出我的代码和回购。形成这个包:https://www.npmjs.com/package/rotate-control

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...