2013-05-21 13 views
15

Questa potrebbe essere una domanda stupida, ma mi chiedo quale piattaforma dovrei usare per distribuire la mia app Angular.js? Ho provato a utilizzare Heroku ma ho rilevato un errore "nessuna app supportata da Cedar". qualche idea?Come si distribuisce un'app Angular.js?

UPDATE

Sto cercando di servire questo a heorku come applicazione Node.js, ma ancora non riesco a farlo funzionare. C'è un file web-server.js nella directory principale della mia candidatura e mi riferimento nel mio Procfile qui:

web: node web-server.js 

Ed ecco il mio file package.json, anche nella directory principale:

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

Ho ricevuto un "errore di compilazione slug" nei miei registri heroku. Pensieri sul perché questo potrebbe non funzionare?

+0

angolare è puro JavaScript e dovrebbe essere indipendente dalla piattaforma. Questo Q/A può aiutare: http://stackoverflow.com/questions/13926419/heroku-for-node-heroku-push-rejected-no-cedar-supported-app-detected – sh0ber

+0

Il titolo della domanda dovrebbe essere: " Come faccio a caricare qualsiasi file su Heroku ";-) – TheHippo

risposta

11

È possibile eseguire un'app Angolare su heroku se è servita come applicazione node.js. Di solito, quando inizi a lavorare con Angular seed, esiste già uno script di server Web del nodo nel progetto. Credo che se esiste un file package.json nella root, heroku lo rileverà e lo eseguirà come applicazione node.js. Tornerò e aggiornerò questa risposta con maggiori dettagli a breve.

UPDATE

Dalla documentazione Heroku (e non sono un esperto), ha questo passo dopo la sezione Deploy: https://devcenter.heroku.com/articles/nodejs#visit-your-application

che sostanzialmente si dice di assicurarsi di avere un banco in esecuzione. Potete farlo sia attraverso il web app nelle impostazioni della vostra applicazione o si può eseguire questo:

$ heroku ps:scale web=1 

per vedere se il processo è in esecuzione, fare

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

Grazie Sam, sto provando a servirlo come nodo.l'applicazione js su heroku ora, ma sto ancora ottenendo alcuni errori. Vedi il mio aggiornamento sopra. qualche idea? – Sara

+0

Hai visto questo? http://stackoverflow.com/a/13012713/577 –

3

Ho cambiato questa linea var DEFAULT_PORT = 8000; in: var DEFAULT_PORT = process.env.PORT || 8000;

.. e poi ha funzionato. quindi credo che il motivo è che Heroku non piace la vostra applicazione in esecuzione sulla porta 8000.

+0

Heroku vuole assegnare automaticamente la porta per ogni istanza, quindi cambiarla in 'process.env.PORT' ti permette di farlo. La tua macchina locale assegnerà automaticamente una porta in questo modo, quindi il test locale funzionerà allo stesso modo. –

4

Scommetto che se si guarda al vostro log vedrete qualcosa di simile:

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 

Ciò significa che la tua app seme angolare utilizza la propria porta (8000) e Heroku non lo consente. Devi rinunciare all'assegnazione del numero di porta a Heroku.

Facilmente risolto. Modificare scripts/web-server.js, e cambiare questo:

this.server.listen(port); 

... a questo:

this.server.listen(process.env.PORT || port); 
Problemi correlati