2015-08-30 4 views
6

Ho un'app di vele molto semplice installata e funzionante localmente. Quando distribuisco su Heroku, non riesco a ottenere una risposta dall'app e alla fine ottengo "Errore dell'applicazione". A volte ricevo "Nessun dato ricevuto".app di heroku e vele | arresti anomali e timeout

tronchi Heroku

2015-08-30T22:06:50.949475+00:00 heroku[api]: Release v22 created by me 

2015-08-30T22:08:57.324207+00:00 heroku[router]: at=error code=H20 desc="App boo 
t timeout" method=GET path="/" host=www.ninjalist.io request_id=8e21f6eb-1a59-4e 
31-9c40-00aab002d0f1 fwd="118.61.238.166" dyno= connect= service= status=503 bytes= 

2015-08-30T22:08:52.058851+00:00 heroku[web.1]: State changed from starting to down 

2015-08-30T22:11:55.735176+00:00 heroku[router]: at=error code=H10 desc="App cra 
shed" method=GET path="/" host=ninjalist.herokuapp.com request_id=314047d1-97d8- 
40ea-8596-4b21978eb581 fwd="108.61.228.166" dyno= connect= service= status=503 b 

tronchi Heroku --source app

2015-08-30T21:40:42.149449+00:00 app[web.1]: > [email protected] start /app 
2015-08-30T21:40:42.149452+00:00 app[web.1]: > sails lift --prod 
2015-08-30T21:40:42.149453+00:00 app[web.1]: 
2015-08-30T21:40:42.149430+00:00 app[web.1]: 
2015-08-30T21:40:42.873435+00:00 app[web.1]: ←[90mStarting app...←[39m 
2015-08-30T21:40:42.871270+00:00 app[web.1]: 
2015-08-30T21:40:42.873742+00:00 app[web.1]: 
2015-08-30T21:40:44.441658+00:00 app[web.1]: Warning: connect.session() MemorySt 
ore is not 
2015-08-30T21:40:44.441664+00:00 app[web.1]: designed for a production environme 
nt, as it will leak 
2015-08-30T21:40:44.441666+00:00 app[web.1]: memory, and will not scale past a s 
ingle process. 
2015-08-30T21:41:04.326177+00:00 app[web.1]: Error: The hook `grunt` is taking t 
oo long to load. 
2015-08-30T21:41:04.326187+00:00 app[web.1]:  at Timer.listOnTimeout (timers. 
js:119:15) 
2015-08-30T21:41:04.326183+00:00 app[web.1]: Make sure it is triggering its `ini 
tialize()` callback, or else set `sails.config.grunt._hookTimeout to a higher va 
lue (currently 20000) 
2015-08-30T21:41:04.326185+00:00 app[web.1]:  at tooLong [as _onTimeout] (/ap 
p/node_modules/sails/lib/app/private/loadHooks.js:92:21) 
2015-08-30T21:41:04.587989+00:00 app[web.1]: 
2015-08-30T21:41:04.641592+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bi 
n/node" "/app/.heroku/node/bin/npm" "start" 
2015-08-30T21:41:04.641839+00:00 app[web.1]: npm ERR! node v0.12.7 
2015-08-30T21:41:04.668957+00:00 app[web.1]: npm ERR! npm v2.11.3 
2015-08-30T21:41:04.669159+00:00 app[web.1]: npm ERR! code ELIFECYCLE 
2015-08-30T21:41:04.669368+00:00 app[web.1]: npm ERR! [email protected] start: `sai 
ls lift --prod` 
2015-08-30T21:41:04.669504+00:00 app[web.1]: npm ERR! Exit status 1 
2015-08-30T21:41:04.669672+00:00 app[web.1]: npm ERR! 
2015-08-30T21:41:04.669827+00:00 app[web.1]: npm ERR! Failed at the [email protected] 
.1 start script 'sails lift --prod'. 
2015-08-30T21:41:04.670024+00:00 app[web.1]: npm ERR! This is most likely a prob 
lem with the firstApp package, 
2015-08-30T21:41:04.670133+00:00 app[web.1]: npm ERR! not with npm itself. 
2015-08-30T21:41:04.670267+00:00 app[web.1]: npm ERR! Tell the author that this 
fails on your system: 
2015-08-30T21:41:04.670427+00:00 app[web.1]: npm ERR!  sails lift --prod 
2015-08-30T21:41:04.675558+00:00 app[web.1]: npm ERR! You can get their info via 
: 
2015-08-30T21:41:04.676317+00:00 app[web.1]: npm ERR!  npm owner ls firstApp 
2015-08-30T21:41:04.697584+00:00 app[web.1]: 
2015-08-30T21:41:04.676320+00:00 app[web.1]: npm ERR! There is likely additional 
logging output above. 
2015-08-30T21:41:04.701882+00:00 app[web.1]: npm ERR!  /app/npm-debug.log 
2015-08-30T21:41:04.640986+00:00 app[web.1]: npm ERR! Linux 3.13.0-61- 

Procfile:

web: npm start 

package.json/scripts:

"scripts": { 
    "debug": "node debug app.js", 
    "start": "sails lift --prod" 
    } 

config/ENV/produzione:

module.exports = { 

    models: { 
    connection: 'mongoDbProd' 
    }, 

    port: 80, 

    log: { 
    level: "silent" 
    } 

}; 

Qualsiasi direzione è apprezzato!

risposta

4

È possibile anche utilizzare un buildpack specializzato per Heroku che esegue i compiti Grunt su distribuzione, quindi disattivare Grunt in Sails per l'ambiente di produzione. È un po 'più di lavoro, ma può diventare necessario perché Heroku ha il proprio timeout che può essere bloccato da Grunt impiegando troppo tempo a scricchiolare le tue risorse.

Abbiamo avuto successo con heroku-buildpack-nodejs-grunt. È possibile seguire le istruzioni per installarlo sul vostro Heroku app, quindi copiare la definizione compito nel vostro tasks/register/prod.js per includere heroku:production compito, ad esempio:

module.exports = function (grunt) { 

    grunt.registerTask('prod', [ 
    'compileAssets', 
    'concat', 
    'uglify', 
    'cssmin', 
    'sails-linker:prodJs', 
    'sails-linker:prodStyles', 
    'sails-linker:devTpl', 
    'sails-linker:prodJsJade', 
    'sails-linker:prodStylesJade', 
    'sails-linker:devTplJade' 
    ]); 

    grunt.registerTask('heroku:production', [ 
    'compileAssets', 
    'concat', 
    'uglify', 
    'cssmin', 
    'sails-linker:prodJs', 
    'sails-linker:prodStyles', 
    'sails-linker:devTpl', 
    'sails-linker:prodJsJade', 
    'sails-linker:prodStylesJade', 
    'sails-linker:devTplJade' 
    ]); 

}; 

Poi finalmente nel file app.js, sostituire

sails.lift(rc('sails')); 

con:

var config = rc('sails'); 
if (process.env.NODE_ENV === 'production') { 
    config.hooks = config.hooks || {}; 
    config.hooks.grunt = false; 
} 
// Start server 
sails.lift(config); 
+0

Grazie! Proverò anche questo. – CiscoKidx

+0

Non ha funzionato per me:/ remote: >> Uglifying source .tmp/public/concat/production.js non è riuscito. remote: Avviso: Uffficazione fallita. remote: SyntaxError: Token inaspettato: operatore (>). remote: linea 1575 in .tmp/public/concat/production.js remote: utilizzare --force per continuare. remote: remote: interrotto a causa di avvertimenti. remoto:! Push respinto, impossibile compilare l'app Node.js. remote: remote:! Push failed remote: Verifica distribuzione ... – Suisse

+0

@Suisse suona come se l'uglificazione stessa non stia funzionando, il che è un problema diverso da quello che l'OP ha dovuto affrontare. Controllerò che funzioni localmente. Una causa comune di errore di uglificazione è l'uso della sintassi ES6 senza prima transpiling con qualcosa come [Babel] (https://babeljs.io/). – sgress454

0

Oltre a impostare hookTimeout, assicurarsi di avere

migrate: 'alter' 

set in config/models.js

0

Aggiunta il funzionario Heroku nodo.js buildpack ha funzionato per me: https://github.com/heroku/heroku-buildpack-nodejs

In Heroku CLI:

heroku buildpacks:add https://github.com/heroku/heroku-buildpack-nodejs.git 

Poi:

git push heroku master 

Tutto dovrebbe costruire con successo, e la vostra applicazione dovrebbe funzionare bene in Heroku.