heroku和sails应用程序|崩溃和超时

heroku和sails应用程序|崩溃和超时,heroku,sails.js,Heroku,Sails.js,我有一个非常基本的sails应用程序,并在本地运行。当我部署到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 timeou

我有一个非常基本的sails应用程序,并在本地运行。当我部署到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
  "scripts": {
    "debug": "node debug app.js",
    "start": "sails lift --prod"
  }
module.exports = {

  models: {
    connection: 'mongoDbProd'
  },

  port: 80,

  log: {
     level: "silent"
  }

};
package.json/scripts

web: npm start
  "scripts": {
    "debug": "node debug app.js",
    "start": "sails lift --prod"
  }
module.exports = {

  models: {
    connection: 'mongoDbProd'
  },

  port: 80,

  log: {
     level: "silent"
  }

};
配置/env/production

web: npm start
  "scripts": {
    "debug": "node debug app.js",
    "start": "sails lift --prod"
  }
module.exports = {

  models: {
    connection: 'mongoDbProd'
  },

  port: 80,

  log: {
     level: "silent"
  }

};
任何方向都是感激的

来自:

使用以下内容创建config/locals.js文件为我解决了问题:

module.exports = {
   hookTimeout: 30000, // 30 seconds
}

您还可以为Heroku使用专门的构建包,在部署时运行Grunt任务,然后在生产环境的Sails中关闭Grunt。这是一个多一点的工作,但它可以成为必要的,因为Heroku有自己的超时,这可能会绊倒咕噜花太长时间来处理您的资产

我们在这方面取得了成功。您可以按照说明将其安装到Heroku应用程序上,然后在
tasks/register/prod.js
中复制任务定义以包含
Heroku:production
任务,例如:

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'
  ]);

};
最后,在
app.js
文件中,替换

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


除了设置hookTimeout,还要确保

  migrate: 'alter' 

在config/models.js中设置添加官方Heroku Node.js buildpack对我很有效:

在Heroku CLI中:

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

git push heroku master

一切都应该成功构建,您的应用程序在Heroku中应该运行良好。

谢谢!我也会试试。对我不起作用:/remote:>>Uglifying source.tmp/public/concat/production.js失败。远程:警告:丑化失败。远程:语法错误:意外标记:运算符(>)。remote:tmp/public/concat/production.js中的第1575行remote:Use--force继续。远程:远程:由于警告而中止。遥控器:!推送被拒绝,未能编译Node.js应用程序。远程:远程:!推送失败远程:验证部署…@Suisse听起来像是uglification本身失败了,这与OP面临的问题不同。我会检查它是否在本地工作。uglification失败的一个常见原因是使用ES6语法时没有首先使用类似的东西进行传输。@sgress454 thx正是由于使用了箭头函数(lambda函数),才解决了问题:npm安装git://github.com/gruntjs/grunt-contrib-uglify#harmony --拯救