将Angular 7部署到github页面

时间:2018-12-04 21:17:52

标签: angular github-pages angular-routing angular7

我有一个简单的angular7应用,其中只有两条路线是“ article”主体。如果您在本地对其进行测试,则它会起作用,但是当您放置在github页面上时,它只会加载页面的CSS。我按照documentation上的角度文档进行了部署,并且还尝试了gh-pages工具。但是他们都不起作用。如果我删除路线,则可以使用。

这是我在控制台上遇到的错误。

1 ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'blogfolio'
Error: Cannot match any routes. URL Segment: 'blogfolio'
    at t.noMatchError (main.5443131190bc79920d7b.js:1)
    at e.selector (main.5443131190bc79920d7b.js:1)
  ............

rodnorm.github.io/:1 Failed to load resource: the server responded with a status of 404 () 

这是我的代码:

app.rounting.ts

import { MainComponent } from './main/main.component';
import { ArticleComponent } from './article/article.component';    
import { Routes } from "@angular/router";

export const routes: Routes = [

    {
        path: '', component: MainComponent
    },
    {
        path: 'article', component: ArticleComponent
    }
];

这是在articleList.component.html

<div class="post-preview" [routerLink]="['/article']">

这是app.routing.module

import { routes } from './app.routing';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

如果您想在此处检查整个代码,请repo,在这里是部署link

3 个答案:

答案 0 :(得分:0)

您指定了base-href吗?我查看了该存储库,但没有在项目配置中找到它。尝试在您的配置中添加baseHref

只是angular.json的一个片段示例:

"outputPath": "wwwroot/dist",
"baseHref": "/dist/",
"deployUrl": "/dist/",
"index": "ClientApp/index.html",
"main": "ClientApp/main.ts",
"polyfills": "ClientApp/polyfills.ts",
"tsConfig": "ClientApp/tsconfig.app.json",
"assets": [
    "ClientApp/resources"
],
"styles": [
    "ClientApp/styles.scss"
],
"scripts": [
    "node_modules/jquery/dist/jquery.min.js",
    "node_modules/popper.js/dist/popper.min.js",
    "node_modules/bootstrap/dist/js/bootstrap.min.js"
]

您可以阅读issue以获取更多信息。

答案 1 :(得分:0)

我发现发生了什么事!

在我的/docs/index.html内部,当我运行

时给出了基本的href
ng build --prod --base-href <nameHere> 

不是相对网址。我必须在此index.html文件中将//添加到基本href中,这是这样的:

 <base href="/blogfolio/">

这使它起作用。我知道一个很好的答案是将“ / blogfolio /”添加到ng build href,但这似乎也不起作用。

有一个关于here的公关。

谢谢一切,伙计们!

答案 2 :(得分:0)

如果您的Angular应用程序中有路由器,则它在GitHub页面中将不可用,您将获得404页面。

要解决此问题,您需要告诉服务器在找不到页面时需要执行的操作,因此请复制index.html文件并将其重命名为404.html。这样可以确保服务器没有的所有路由都将重新路由到Angular路由器。

有关更多信息,请参考this。谢谢!