我有一个非常基本的风帆应用程序并在本地运行.当我部署到Heroku时,我无法从应用程序获得响应,然后最终得到“应用程序错误”.我有时收到“没有收到数据”.
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
heroku日志 – 源应用程序
2015-08-30T21:40:42.149449+00:00 app[web.1]: > firstApp@0.0.1 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! firstApp@0.0.1 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 firstApp@0.0 .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" }
配置/ ENV /制作:
module.exports = { models: { connection: 'mongoDbProd' },port: 80,log: { level: "silent" } };
任何方向表示赞赏!
解决方法
您还可以为Heroku使用专门的buildpack,在部署时运行Grunt任务,然后在Sails中为生产环境关闭Grunt.这是一个更多的工作,但它可能是必要的,因为Heroku有自己的超时,可以被Grunt花费太长时间来摧毁你的资产.
我们已经成功使用了heroku-buildpack-nodejs-grunt.您可以按照说明在Heroku应用程序上安装它,然后将任务定义复制到tasks / register / prod.js中以包含heroku:生产任务,例如:
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','sails-linker:devTplJade' ]); };
然后最后在你的app.js文件中,替换
sails.lift(rc('sails'));
有:
var config = rc('sails'); if (process.env.NODE_ENV === 'production') { config.hooks = config.hooks || {}; config.hooks.grunt = false; } // Start server sails.lift(config);