2016-06-07 10 views
33

Stworzyłem nową aplikację kątową przy użyciu kąta-cli.jak wdrożyć aplikację kątową2 zbudowaną przy użyciu kątowego-cli

Ukończyłem aplikację i wyświetlam jej podgląd za pomocą polecenia ng-serve, działa idealnie.

Potem użyłem ng build --prod, który generuje folder "dist". Po uruchomieniu tego folderu w Xampp nie działa. Zauważyłem, że nie ma plików * .js, które powinny znajdować się po konwersji * .ts -> * .js (przypuszczam).

Dołączyłem zrzut ekranu, na którym po lewej stronie wyświetla się folder src zawierający wszystkie pliki .ts, Na środku pokazuje folder 'dist' i zrzut ekranu przeglądarki.

Proszę wskazać, w jaki sposób mogę wygenerować w pełni działającą aplikację z kąta-cli, którą mogę uruchomić na moim serwerze xampp.

Zrzut ekranu:

Screenshot

+0

Jaka wersja kąta-cli? Czy korzystasz z opcji - mobile i angle-universal? – Splaktar

Odpowiedz

48

metoda 1 (popularny): Jeśli używasz kątowe-cli, następnie

ng build --prod 

rade. Następnie można skopiować wszystko z .dist folderu do folderu serwera

Metoda 2:

można użyć serwera HTTP, aby służyć swoją aplikację. Aby zainstalować serwer HTTP

npm install http-server -g 

i po przejściu do folderu projektu

http-server ./dist 

będzie służyć wszystkie pliki w folderze. możesz sprawdzić terminal, jaki adres ip i port możesz użyć, aby uzyskać dostęp do aplikacji. Teraz otworzyć przeglądarkę i wpisać

ip-adress:port/index.html 

nadzieję, że pomoże :)

Bonus: Jeśli chcesz wdrożyć w Heroku. Proszę przejść przez to szczegółowy poradnik https://medium.com/@ryanchenkie_40935/angular-cli-deployment-host-your-angular-2-app-on-heroku-3f266f13f352

+0

działa, ale najpierw z kanciastym cli musisz zbudować swój projekt za pomocą ng build –

+0

Możesz wpisać http-serwer ./dist -o, aby otworzyć aplikację bezpośrednio w przeglądarce. – Damith

+1

Dzięki, działa, ale kiedy odświeżam stronę, to nie znaleziono błędu –

1

Używam najnowszej wersji kątowej-CLI (w czasie tego odpowiadać jego 1.0.0Beta-18)

Droga ta wersja działa to stawia wszystko w plikach pakunku i wywołuje je w pliku index.html. Następnie musisz skopiować swoje zasoby do folderu dist (z jakiegoś powodu nie robi tego). Na koniec, sprawdź dwukrotnie swój podstawowy href, upewnij się, że jest ustawiony na to, co trzeba ustawić, a następnie powinien działać. To właśnie dla mnie zadziałało i testowałem zarówno Apache, jak i Node.

16

Dla każdego, kto szuka odpowiedzi na hosting IIS ...

Budowanie projektu

ng build --prod 

skopiować całą zawartość folderu ./dist do folderu głównego na swojej stronie zachowując strukturę folderów w ./dist (czyli - nie ruszaj niczego wokół). Używanie wersji Beta-18 wszystkich dostępnych zasobów (obrazów w moim przypadku) zostało skopiowanych do pliku ./dist/assets podczas kompilacji i zostało poprawnie odwołane w ich składowych zawierających.

+1

Więc wdrażasz również pliki .gz i .map? – EdL

+1

W IIS nie trzeba instalować plików .gz, wystarczy [configure] (https://www.iis.net/configreference/system.webserver/httpcompression) IIS, aby użyć kompresji dynamicznej, można zaoszczędzić sporo bajty przechodzące przez przewód. Pliki .map są mapami źródłowymi. Pomyśl o nich jako o .pdb w świecie javascript, więc tak, jeśli chcesz debugować na serwerze, na który jesteś wdrażany. Uglifowanie JS sprawia, że ​​debugowanie naprawdę trudne (czytaj: niemożliwe) bez nich. –

+0

Poszłam za wdrożeniem metody na serwerze Apache. Udało się, ale strona była wyświetlana jako zepsuta podczas odświeżania (Cntrl + R) podstron. na przykład W moim przypadku strona nie będzie działała bezpośrednio na stronie http://example.com/question. Ktoś ma pomysł, jak to naprawić? – srijishks

4

Oto przykład z Heroku:

  1. Utwórz konto Heroku i zainstalować CLI

  2. Przesuń angular-cli dep do dependencies w package.json (tak, że zostanie zainstalowany po naciśnięciu do Heroku

  3. Dodaj skrypt postinstall, który uruchomi się ng build, gdy kod zostanie przekazany do Heroku. Serwer węzłów, który zostanie utworzony w następnym kroku. Spowoduje to umieszczenie statycznych plików aplikacji w katalogu dist na serwerze i późniejsze uruchomienie aplikacji.

"scripts": { 
    // ... 
    "start": "node server.js", 
    "postinstall": "ng build --aot -prod" 
} 
  1. Załóż Server Express do obsługi aplikacji.
// server.js 
const express = require('express'); 
const app = express(); 
// Run the app by serving the static files 
// in the dist directory 
app.use(express.static(__dirname + '/dist')); 
// Start the app by listening on the default 
// Heroku port 
app.listen(process.env.PORT || 8080); 
  1. Stworzenie zdalnej Heroku i wsunąć do depoy aplikację.
heroku create 
git add . 
git commit -m "first deploy" 
git push heroku master 

Oto krótki writeup zrobiłem, że ma więcej szczegółów, w tym w jaki sposób zmusić żądań użyć HTTPS i jak radzić PathLocationStrategy :)

+0

Polecam! Świetny sposób, aby zobaczyć swoją aplikację w środowisku na żywo w żadnym momencie. Aby uzyskać więcej informacji: https://medium.com/@ryanchenkie_40935/angular-cli-deployment-host-your-angular-2-app-on-heoko-3f266f13f352 – SrAxi

+0

Co jeśli używasz Angular Universal z serwerem węzła w Maszynopisie ? –

9

Sprawdź plik index.html i zmodyfikować linia

<base href="/[your-project-folder-name]/dist/"> 

Treści powinny być ładowane poprawnie. Następnie można załadować stylów globalnie

Należy ustawić base href zalecane przez Johan

ng build --prod --bh /[your-project-folder-name]/dist/ 
+2

Nie edytuj index.html, użyj polecenia ng build/serve z parametrem --bh. –

+1

Och Tak, dziękuję, uważam, że baza href jest rozwiązaniem jego pytania. ng kompilacja --prod --bh/[nazwa-projektu-folderu-folderu]/dist/ –

+0

+1 ale chciałem wyjaśnić, że nie musisz uwzględniać dystrybucji w terminalu ng build --bh/mycoolapp/<- ---- pracował dla mnie –

3

użytkowania ng build z flagą --bh

Zestawy baza tag href do/myUrl/index.html w swojej :

ng build --base-href /myUrl/ 
ng build --bh /myUrl/ 
1

Obecnie używam Angular-CLI 1.0.0-beta.32.3

w katalogu głównym biegu projektu npm zainstalować serwer HTTP -g

Po udanej instalacji run ng build --prod

po udanej kompilacji metę http -server ./dist