MissingSchemaError в приложении NodeJS на сервере Heroku

Мое приложение успешно работает на моем местном.

Когда я нажимаю его на сервер heroku, иногда он вылетает с этой ошибкой:

2012-12-28T10:00:53+00:00 heroku[web.1]: Starting process with command `node server.js`
2012-12-28T10:00:54+00:00 app[web.1]: 
2012-12-28T10:00:54+00:00 app[web.1]: /app/node_modules/mongoose/lib/index.js:261
2012-12-28T10:00:54+00:00 app[web.1]:       throw new mongoose.Error.MissingSchemaError(name);
2012-12-28T10:00:54+00:00 app[web.1]:             ^
2012-12-28T10:00:54+00:00 app[web.1]: MissingSchemaError: Schema hasn't been registered for model "Activity".
2012-12-28T10:00:54+00:00 app[web.1]: Use mongoose.model(name, schema)
2012-12-28T10:00:54+00:00 app[web.1]:     at Mongoose.model (/app/node_modules/mongoose/lib/index.js:261:13)
2012-12-28T10:00:54+00:00 app[web.1]:     at Object. (/app/app/models/user.js:8:25)
2012-12-28T10:00:54+00:00 app[web.1]:     at Module._compile (module.js:449:26)
2012-12-28T10:00:54+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:467:10)
2012-12-28T10:00:54+00:00 app[web.1]:     at Module.load (module.js:356:32)
2012-12-28T10:00:54+00:00 app[web.1]:     at Function.Module._load (module.js:312:12)
2012-12-28T10:00:54+00:00 app[web.1]:     at Module.require (module.js:362:17)
2012-12-28T10:00:54+00:00 app[web.1]:     at require (module.js:378:17)
2012-12-28T10:00:54+00:00 app[web.1]:     at /app/server.js:23:3
2012-12-28T10:00:54+00:00 app[web.1]:     at Array.forEach (native)
2012-12-28T10:00:55+00:00 heroku[web.1]: Process exited with status 1
2012-12-28T10:00:55+00:00 heroku[web.1]: State changed from starting to crashed

В моем server.js я загружаю модели с помощью этого кода:

var models_path = __dirname + '/app/models'
fs.readdirSync(models_path).forEach(function (file) {
     require(models_path+'/'+file)
})

И моя activity.js:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema
  , moment = require('moment')

var schemaOptions = {
    toJSON: {
      virtuals: true
    }
};
var ActivitySchema = new Schema({
    venue: {type : Schema.ObjectId, ref : 'Venue'}
  , user: {type : Schema.ObjectId, ref : 'User'}
  , createdAt: {type : Date, default : Date.now}
  , rate: Number
  , message : String
  , source : String 
}, schemaOptions)
mongoose.model('Activity', ActivitySchema)

ActivitySchema.index({ "user": 1, "venue"  : 1 }, { unique: true })

var modifiedAt = require('../../config/plugins.js');
ActivitySchema.plugin(modifiedAt, { index: false });

ActivitySchema.virtual('summary').get(function() {
        moment.lang('en');

    return moment(this.createdAt).fromNow()  + ' via ' + this.source;
});

Странно, иногда приложение падает, но иногда оно работает. Что я могу сделать, чтобы решить эту проблему?

1
nl ja de

2 ответы

Я столкнулся с тем же вопросом. Я изменил свой модуль пользователей, чтобы создать соответствующий документ профиля, соответствующий модулю пользователей. При загрузке этого пользовательского модуля схема профиля будет вызывать ту же ошибку, когда я загружаю ее в верхнюю часть файла. Когда я помещал его в рамки кода, который я использовал, он исправил проблему.

    var Profile = mongoose.model('Profile');

Мне пришлось переместить указанную выше строку в код (я думаю, что это время, когда я пытался использовать его, прежде чем монго было сделано

0
добавлено

То, что мне пришлось сделать в моем коде для разрешения «MissingSchemaError» в mongoose, было экспортировать функцию, которая принимает параметр mongoose в качестве параметра.

Что-то вроде этого.

module.exports = function (mongoose) {

    var GeoSchema = new mongoose.Schema({
        loc:{ type:[Number], index:'2d'}
    });

    return GeoSchema;
};
0
добавлено
pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Node.js — русскоговорящее сообщество
Node.js — русскоговорящее сообщество
4 160 участник(ов)

Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было комфортным. Правила: https://rudevs.network/ByaMH6un7 См. также: @js_ru, @react_js, @angular_ru, @vuejs_ru, @devops_ru Вакансии и поиск работы: @javascript_jobs и @nodejs_jobs

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

Node: русскоязычное сообщество
Node: русскоязычное сообщество
28 участник(ов)

Независимое сообщество node разработчиков на русском языке. Правила: https://node-chat.ru/ Партнеры: @react_ru @ru_vuejs @nuxtjs_ru @ru_docker @nlp_ru