>

내 안에 다음 싱글 톤이 있습니다 app.js 암호:

const TodoManager = (function () {
    const allTodos = [];
    return {
        addNewTodo: function (title, color) {
            allTodos.push(new Todo(title, color));
        },
    };
})();

그리고 수출하고 싶습니다 addNewTodo 다른 기능 .js 파일, 그래서 나는 끝에 첨부 app.js :

module.exports = TodoManager

그런 다음에 dom.js 파일 (사용하려는 파일 addNewTodo 기능), 나는 그것을 수입했다 :

import TodoManager from './app.js';

그러나 객체에 액세스하려고 할 때마다 반환됩니다. undefined . 내가 바보 같은 일을하고 있습니까?

(Parcel.js를 번 들러로 사용하고 있습니다)

  • 답변 # 1

    당신은 :

    // app.js
    require("./dom.js");
    const TodoManager = (function () {
      // ...
    
    

    당신은 또한

    // dom.js
    import TodoManager from './app.js';
    const MenuBar = (function(){
      // ...
    
    

    이것은 순환 종속성입니다. 파일 중 하나가 실행되면 다른 파일을 가져와야하므로 제어 흐름이 다른 파일로 전환됩니다. 다른 하나는 첫 번째 파일을 가져와야한다는 것을 알게됩니다. 그러나 첫 번째 파일은 이미 작성 중이므로 다시 전환되지 않습니다. 인터프리터는 잠재적 인 문제가 있음을 이해하지만 오류가 발생하지 않으며 원래 파일의 내보내기를 빈 객체로 처음 설정하여 스크립트를 최대한 실행하려고합니다. 그러나 이로 인해 버그가 발생합니다.

    그러나 코드에서 app.js 실제로 아무것도하지 않습니다 require("./dom.js"); -필요가 없습니다 app.js ~에 달려있다 dom.js . 따라서 정말로해야 할 일은 제거하는 것입니다. require("./dom.js"); ...에서 app.js .

관련 자료

  • 이전 워드 프레스 로그인 양식
  • 다음 java - 나는 검은 질감이