2013-05-21 16 views
15

To może być głupie pytanie, ale zastanawiam się, na jakiej platformie powinienem użyć mojej aplikacji Angular.js? Próbowałem używać Heroku, ale otrzymałem błąd "nie wykryto aplikacji obsługiwanej przez Cedry". jakieś pomysły?Jak wdrożyć aplikację Angular.js?

UPDATE

Próbuję służyć to heorku jako aplikacja node.js, ale wciąż nie może wydawać się uzyskać jego pracy. Jest to plik web-server.js w katalogu głównym mojego wniosku i odwołać go w moim Procfile tutaj:

web: node web-server.js 

A oto mój plik package.json, również w katalogu:

{ 
"name": "medicare-data", 
"version": "0.0.1", 
"dependencies": { 
}, 
"engines": { 
    "node": "0.10.x", 
    "npm": "1.2.x" 
}, 
"respository": "medicare-data", 
"author": "sararob" 
} 

Dostaję "błąd kompilacji" w dziennikach Heroku. Myślisz, dlaczego to nie działa?

+0

kątowa jest czysty javascript i powinny być niezależne od platformy. Ten Q/A może pomóc: http://stackoverflow.com/questions/13926419/heroku-for-node-heroku-push-rejected-no-cedar-supported-app-detected – sh0ber

+0

Tytuł pytania powinien brzmieć: " Jak mogę przesłać dowolny plik do Heroku ";-) – TheHippo

Odpowiedz

11

Możesz uruchomić aplikację Angular na heroku, jeśli jest ona używana jako aplikacja node.js. Zwykle, gdy zaczynasz pracę z ziarnem Angular, w projekcie jest już skrypt webserver węzła. Wierzę, że jeśli w katalogu głównym znajduje się plik package.json, heroku wykryje i uruchomi go jako aplikację node.js. Wrócę i wkrótce zaktualizuję tę odpowiedź bardziej szczegółowo.

UPDATE

Od docs Heroku (i nie jestem ekspertem), ma ten fragment po sekcji deploy: https://devcenter.heroku.com/articles/nodejs#visit-your-application

które zasadniczo mówi, aby upewnić się, że masz jeden bieg hamowni. Można to zrobić za pośrednictwem aplikacji internetowej pod ustawieniach aplikacji można też uruchomić to:

$ heroku ps:scale web=1 

Aby sprawdzić, czy proces jest uruchomiony, robić

$ heroku ps 
=== web: `node web.js` 
web.1: up for 10s 
+0

Dzięki Sam, próbuję służyć jako węzeł.Aplikacja js na heroku teraz, ale wciąż dostaję błędy. Zobacz moją aktualizację powyżej. jakieś pomysły? – Sara

+0

Widziałeś to? http://stackoverflow.com/a/13012713/577 –

3

Zmieniłem tej linii var DEFAULT_PORT = 8000; do: var DEFAULT_PORT = process.env.PORT || 8000;

.. i wtedy zadziałało. Więc wierzę, że powodem jest to, że Heroku nie lubi swoją aplikację działa na porcie 8000.

+0

Heroku chce automatycznie przypisać port dla każdej instancji, więc zmiana go na "process.env.PORT" pozwala na to. Twój lokalny komputer automatycznie przydzieli port także w ten sposób, więc testowanie lokalne będzie działać tak samo. –

4

Założę się, jeśli spojrzeć na swoje dzienniki zobaczysz coś takiego:

2013-08-26T12:51:18.257006+00:00 heroku[web.1]: Starting process with command `node scripts/web-server.js` 
2013-08-26T12:51:19.109974+00:00 app[web.1]: Http Server running at http://localhost:8000/ 
2013-08-26T12:51:34.369092+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path=/ host=cmwidget.herokuapp.com fwd="77.101.66.230" dyno= connect= service= status=503 bytes= 
2013-08-26T12:52:19.445974+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 

oznacza to, że Twoja aplikacja Angular Seed używa własnego portu (8000), a Heroku na to nie pozwala. Musisz zrezygnować z przypisania numeru portu do Heroku.

Łatwe rozwiązanie. scripts/web-server.js modyfikować i zmieniać to:

this.server.listen(port); 

... do tego:

this.server.listen(process.env.PORT || port); 
Powiązane problemy