programing

Require는 빈 개체를 반환합니다.

yellowcard 2023. 7. 24. 22:24
반응형

Require는 빈 개체를 반환합니다.

index.js와 몇 가지 모델(classes) index.js가 있는 폴더가 있습니다.

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

book.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

문제는 저자 수업이 책을 찾지 못하는 것 같다는 것입니다!빈 개체일 뿐입니다.그러나 index.js에서 내보내기를 전환하면 Book을 Author 뒤에 놓으면 작동하지만 다른 모델은 작동하지 않습니다.

저는 그것을 작동시키기 위해 어떤 해킹도 하고 싶지 않습니다.

이것은 순환 종속성이 있기 때문입니다.Node.js는 매우 구체적인 방법으로 이를 처리합니다.

  1. 첫 번째 모듈이 로드되고 실행됩니다(이 경우,book.js. 그것 (book.js) 두 번째 모듈을 로드하고 실행합니다(author.js)일 때 (book.js) 다른 하나가 필요합니다.author.js)

  2. 두 번째 모듈의 경우)author.js)가 로드되어 실행됩니다.author.js) 첫 번째 모듈이 필요합니다(book.js하지만 그것은author.js) 부분적으로 채워진 개체를 수신합니다. 그러나 book.js에서 내보내기에 대해 설정된 사항이 많더라도 author.js는 해당 개체에 포함됩니다.

  3. 끝나고book.js완전히 실행됩니다, 객체.author.js에서 얻은require('./book')가득 찰 것입니다book.js모듈 개체

자세한 내용은 다음 문서를 참조하십시오. http://nodejs.org/api/modules.html

ActiveRecord 개체 중 하나에 스키마를 동적으로 추가할 수 있다면 이를 해결하는 방법 중 하나입니다.이것은 사실 좀 까다로운 상황입니다.사실, 모듈 시스템이 없어도, 이것은 당신에게 문제를 일으킬 것입니다.만약 당신이 이 모든 코드를 하나의 파일에 넣는다면, 당신은 그것을 어떻게 작동시킬 것입니까?

언급URL : https://stackoverflow.com/questions/23875233/require-returns-an-empty-object

반응형