2016-07-18 15 views

Odpowiedz

9

Jest to możliwe. Ale wtedy powinieneś użyć webpack.

Po skonfigurowaniu aplikacji do pracy z pakietem internetowym można npm run build przesłać przetworzone pliki do S3 as a static website.

+0

Potwierdzony. Zrobiłem to i działa bardzo szybko, klonując [to] (https://github.com/preboot/angular2-webpack) git repo, używając 'npm run build' i wgrywając zawartość/dist do już skonfigurowanego serwisu internetowego aws s3 Dziękuję Jo Jo. – Coxy

+1

Dodatkowo, powinieneś upewnić się, że adresujesz routing dla adresów URL innych niż index.html (np. http://example.com/items), ponieważ należy je przekierować do pliku index.html, aby umożliwić ich przekierowanie - patrz http://stackoverflow.com/questions/16267339/s3-static-website- hosting-route-all-paths-to-index-html –

+0

npm uruchom kompilację wymaga opcji '--prod' i nie powinieneś serwować plików bezpośrednio z amazonS3, ponieważ jest usługą przechowywania, a nie usługą dystrybucyjną – coorasse

-12

Nie, nie można uruchomić funkcji angle2 przy użyciu programu Amazon s3 bez serwera dedykowanego. Według Angular2 Docs potrzebujesz co najmniej małego serwera do uruchomienia tych plików. Możesz więc uruchomić serwer NodeJs na E3 lub ESB i wdrożyć tam swoją aplikację angular2.

Dzięki @Gunter za wskazanie - nie można tego zrobić bez dodatkowych parametrów wiersza poleceń.

+0

Nie jest możliwe, nawet jeśli kątowy 2 jest napisany w JS, a nie maszynopisie, tak, że nie wymaga kompilacji trans. – user93

+3

S3 ** to ** "przynajmniej mały serwer". Nie można tego zrobić, ładując go z adresu URL 'file: /// ...' z lokalnego dysku z powodu ograniczeń bezpieczeństwa przeglądarki (przynajmniej nie z dodatkowymi parametrami wiersza poleceń). Prawdopodobnie musisz włączyć 'HashLocationStrategy', ponieważ domyślna' PathLocationStrategy' wymaga obsługi serwera. –

+0

Dziękujemy za wyjaśnienia @ GünterZöchbauer – user93

6

Tak, można wdrożyć aplikację na AmazonS3, ale nie należy jej obsługiwać bezpośrednio z witryny Amazon S3: S3 to usługa składowania, a nie usługa dystrybucji. Dlatego powinieneś stworzyć dystrybucję CloudFront dla swojego kubełka S3.

etapy: (Bądź ostrożny z tym opcję --prod)

  1. budować swoją aplikację z npm run build --prod

  2. Tworzenie rozkładu CloudFront dla wiadra Amazon S3 i ustawić Default Root Object do index.html

  3. Jeśli korzystasz z url, przepisuj i nie mieszaj strategii (ścieżki wyglądają jak http://yourwebsite/login, a nie http://yourwebsite/#/login utworzyć niestandardową odpowiedź błędu dla swojej dystrybucji CloudFront z poniższym:

    • HTTP Error Code: 404

    • Błąd buforowania Minimalna TTL (sekundy): 0

    • Dostosuj Błąd Response: Tak
    • Response Path Strona: /index.html
    • kod odpowiedzi HTTP: 200

Należy również zachować ostrożność podczas wdrażania aplikacji do Invalidate index.html na CloudFront, w przeciwnym razie starsza wersja jest buforowana i zostanie dostarczona do klienta.

Proszę follow my guide for more details.

+1

To powinna być zaakceptowana odpowiedź. Wyraźnie wyszczególnia wymóg dodania reguły przepisywania, aby wszystkie żądania trafiały do ​​pliku index.html (którego S3 nie robi) i odróżnia S3 jako platformę pamięci masowej. –