【问题标题】:Lifting a sails app on Heroku fails在 Heroku 上举起一个风帆应用程序失败
【发布时间】:2016-02-14 08:52:31
【问题描述】:

我无法在 Heroku 的生产环境中启动 Sails api 应用程序以连接到 mongolab 数据库。这在本地设置中运行时效果很好。 Heroku 日志显示以下内容...

`
/app/node_modules/mongodb/lib/server.js:235
        process.nextTick(function() { throw err; })
                                      ^
TypeError: Cannot read property 'close' of undefined
    at /app/node_modules/sails-mongo/lib/adapter.js:138:13
    at /app/node_modules/sails-mongo/node_modules/async/lib/async.js:187:20
    at /app/node_modules/sails-mongo/node_modules/async/lib/async.js:239:13
    at _arrayEach (/app/node_modules/sails-mongo/node_modules/async/lib/async.js:91:13)
    at _each (/app/node_modules/sails-mongo/node_modules/async/lib/async.js:82:13)
    at Object.async.forEachOf.async.eachOf (/app/node_modules/sails-mongo/node_modules/async/lib/async.js:238:9)
    at Object.async.forEach.async.each (/app/node_modules/sails-mongo/node_modules/async/lib/async.js:215:22)
    at Object.module.exports.adapter.teardown (/app/node_modules/sails-mongo/lib/adapter.js:137:22)
    at /app/node_modules/sails/lib/hooks/orm/index.js:244:19
    at /app/node_modules/async/lib/async.js:122:13
    at _each (/app/node_modules/async/lib/async.js:46:13)
    at Object.async.each (/app/node_modules/async/lib/async.js:121:9)
    at Sails.hook.teardown (/app/node_modules/sails/lib/hooks/orm/index.js:241:13)
    at Sails.g (events.js:260:16)
    at emitNone (events.js:67:13)
    at Sails.emit (events.js:166:7)
`

跑帆版本 0.11.2

Sails-mongo 版本 0.11.4

process.env 变量已添加并验证

connection.js

`
mongodb: {
  adapter: 'sails-mongo',
  url : process.env.CONNECTION_URL,
  host: process.env.DB_HOST,
  port: process.env.PORT_NR,
  user: proces.env.USER,
  password: process.env.PASSWORD,
  database: process.env.DB
},

` env/production.js

`
connections : {
  mongoLive: {
    adapter: 'sails-mongo',
    url : process.env.CONNECTION_URL
  }
},
models: {
  connection: 'mongoLive'
},
`

开发.js

`
connections : {
  mongoDev: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    database: 'threads_db'
  }
},

models: {
  connection: 'mongoDev'
}
`

过程文件

`
web: npm start
`

package.json

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

models.js 已设置为

`
 connection: 'mongodb',
`

因此,在本地运行它可以很好地连接到本地 mongo db 和远程 mongolab db,但部署到 Heroku 失败。在我看来,我在设置中遗漏了一些东西。感谢您提供帮助。

【问题讨论】:

    标签: mongodb heroku sails.js sails-mongo


    【解决方案1】:

    已知错误。查看https://github.com/balderdashy/sails-mongo/issues/352

    在它发布之前,您可能需要npm install sails-mongo#master --save

    【讨论】:

    • 感谢您指出这一点。我将 package.json 中的sails-mongo 版本更新为 "sails-mongo": "git+github.com/balderdashy/sails-mongo.git" 并推送到 heroku 但没有运气。
    • 那不好。我在模数托管上遇到了同样的问题,我可能也将水线更新到了最新版本。我现在无权访问该项目,一旦我会尝试更新我的答案。
    • 是否有任何可用的解决方法。如果有其他可用选项,您是否尝试过任何其他 mongo 适配器?
    • 尝试使用最新的风帆 "sails": "git+https://github.com/balderdashy/sails.git" 我遇到了同样的错误
    • 以前试过这个,但在heroku上对我不起作用。它对你有用吗?
    【解决方案2】:

    我通过使用sails-mongo 的主版本解决了这个问题。

    package.json

    "sails": "git+https://github.com/balderdashy/sails.git"
    

    然后一旦部署到heroku,用

    重新启动dyno
    `heroku ps:scale web=1`
    

    【讨论】:

      猜你喜欢
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多