Require возвращает пустой объект



у меня есть папка, которая имеет индекс.js и несколько моделей (классов)
индекс.js



module.exports = {
Book : require('./book'),
Author : require('./author')
}


книги.js



var Author = require('./author')
var Book = models.ActiveRecord.extend({
schema : {
belongsTo : {
author : Author
}
}
})
module.exports = Book


автор.js



var Book = require('./book')
var Author = models.ActiveRecord.extend({
schema : {
hasMany : {
author : Book
}
}
})

module.exports = Author


проблема в том, что автор класса, кажется, не найти книгу! Это просто пустой объект.
Однако, если я переключу экспорт в индекс.js, ставя книгу после автора-это работает, но потом другая модель перестает работать.



Я не хочу делать никаких хаков, чтобы заставить его работать.

450   1  

1 ответ:

это потому, что у вас есть циклическая зависимость. Узел.js обрабатывает это очень специфическим образом:

  1. первый модуль загружается и запускается (в этом случае book.js). Это (book.js) загрузит и запустит второй модуль (author.js), когда он (book.js) требует другой (author.js)

  2. когда второй модуль (author.js) загружается и запускается, он (author.js) требуется первый модуль (book.js), но он (author.js) получите частично заполненной

Comments

    Ничего не найдено.