问题描述
应用源代码:https://github.com/shardul-shah/first-angular-app
它适用于 gh-pages... 有点 (https://shardul-shah.github.io/first-angular-app/)
问题:
- 转到此 https://shardul-shah.github.io/first-angular-app/ 时,URL 会自动更改为 https://shardul-shah.github.io/first-angular-app/first-angular-app/
- 刷新 https://shardul-shah.github.io/first-angular-app/first-angular-app/(或任何路线上的任何刷新)导致白色、空白屏幕。
- 当我点击 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.io 和 https://stackblitz.com/edit/angular-n2rqei?file=src/app/app.module.ts
谢谢!
解决方法
解决方案: 第一个问题的解决方案:
- 您可以在 base 的 src/index.html 中再添加一个文件夹。这就是为什么它在这个 url 之后加载所有路由。 (检查屏幕截图)[在 base 中使用 ./ 而不是 github 文件夹或其他任何东西]
第二个问题的解决方案:
-
刷新任何路线都会出现页面空白白屏。这是因为你没有在你的角度中使用 useHashStretegy。
-
您必须在 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