2017-06-02 27 views
2

我有一个简单的Angular (4)应用程序,我想在Github Pages上托管,从Angular CLI这样做的选项似乎已被删除。有没有办法做到这一点,如果是这样的话?在Github上的角4应用页面

这是我的package.json

{ 
    "name": "e-portfolio", 
    "version": "0.0.0", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/cli": "^1.0.6", 
    "@angular/common": "^4.0.0", 
    "@angular/compiler": "^4.0.0", 
    "@angular/core": "^4.0.0", 
    "@angular/forms": "^4.0.0", 
    "@angular/http": "^4.0.0", 
    "@angular/platform-browser": "^4.0.0", 
    "@angular/platform-browser-dynamic": "^4.0.0", 
    "@angular/router": "^4.0.0", 
    "@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.26", 
    "@ngx-translate/core": "^6.0.1", 
    "bootstrap": "^4.0.0-alpha.6", 
    "core-js": "^2.4.1", 
    "font-awesome": "^4.7.0", 
    "rxjs": "^5.1.0", 
    "zone.js": "^0.8.4" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.0.6", 
    "@angular/compiler-cli": "^4.0.0", 
    "@types/jasmine": "2.5.38", 
    "@types/node": "~6.0.60", 
    "codelyzer": "~2.0.0", 
    "jasmine-core": "~2.5.2", 
    "jasmine-spec-reporter": "~3.2.0", 
    "karma": "~1.4.1", 
    "karma-chrome-launcher": "~2.1.1", 
    "karma-cli": "~1.0.1", 
    "karma-jasmine": "~1.1.0", 
    "karma-jasmine-html-reporter": "^0.2.2", 
    "karma-coverage-istanbul-reporter": "^0.2.0", 
    "protractor": "~5.1.0", 
    "ts-node": "~2.0.0", 
    "tslint": "~4.5.0", 
    "typescript": "~2.2.0" 
    } 
} 

当尝试使用NG构建我得到这个消息

作为一个预警,我们正朝着在CLI NPM包“@角/ CLI”与下一个版本 仅支持6.9或更高版本。不久之后,该软件包将正式弃用 。

要禁用此警告,请使用“ng set --global warnings.packageDeprecation = false”。

您必须在angular-cli项目中才能使用build命令。

我DEBUGLOG

0 info it worked if it ends with ok 
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe', 
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 
1 verbose cli 'start' ] 
2 info using [email protected] 
3 info using [email protected] 
4 verbose stack Error: ENOENT: no such file or directory, open 'C:\Users\User\Documents\School\Portfolio\ePortfolio\package.json' 
4 verbose stack  at Error (native) 
5 verbose cwd C:\Users\User\Documents\School\Portfolio\ePortfolio 
6 error Windows_NT 10.0.15063 
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start" 
8 error node v6.9.5 
9 error npm v3.10.10 
10 error path C:\Users\User\Documents\School\Portfolio\ePortfolio\package.json 
11 error code ENOENT 
12 error errno -4058 
13 error syscall open 
14 error enoent ENOENT: no such file or directory, open 'C:\Users\User\Documents\School\Portfolio\ePortfolio\package.json' 
15 error enoent ENOENT: no such file or directory, open 'C:\Users\User\Documents\School\Portfolio\ePortfolio\package.json' 
15 error enoent This is most likely not a problem with npm itself 
15 error enoent and is related to npm not being able to find a file. 
16 verbose exit [ -4058, true ] 

回答

3

当使用这种commad ng build --prod --base-href "https://USERNAME.github.io/REPOSITORY_NAME/"

我交换了我的宝库,它被称为电子档案袋,我键入它作为电子档案袋,似乎字母P必须是它的工作资本。

3
+0

我给它一个尝试 –

+1

这样做,但我看看是从我的'index.html'加载'',而不是我想要显示 –

+0

控制台上是否有任何错误?一个好的方法是在dist文件夹中使用http-server来确保它是一个git hub页面。 –

2

我发现的最简单的方法是2个步骤的过程。首先,你需要知道Github Pages不能很好地处理base href,所以禁用pushState和删除base href就足以让我走了。

这里的步骤:

1 - 通过添加参数{useHash: true}base href删除反斜杠"/"index.html

<base href=""> 

2 - 禁用pushState。就我而言,我有一个app-routing.module.ts我与下面的代码更新:

@NgModule({ 
    imports: [RouterModule.forRoot(routes, {useHash: true})], // <-- HERE 
    exports: [RouterModule], 
}) 

然后发布到Github的页面和我们在业务