导出的对象 returns 未定义

Exported object returns undefined

我的 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';

但是,每次我尝试访问它的任何对象时,它 returns undefined。我做错了什么愚蠢的事吗?

(我正在使用 Parcel.js 作为捆绑器)

您有:

// app.js
require("./dom.js");

const TodoManager = (function () {
  // ...

你还有

// dom.js
import TodoManager from './app.js';

const MenuBar = (function(){
  // ...

这是一个循环依赖。当其中一个文件 运行s 发现需要导入另一个文件时,控制流切换到另一个文件。然后,另一个看到它需要导入第一个文件。但是第一个文件已经在创建过程中,所以它不会切换回来。解释器知道你有一个潜在的问题,但它不会抛出错误,它会尝试 运行 脚本,通过最初将原始文件的导出设置为空对象。但这会导致错误。

但是,在您的代码中,app.js 实际上并未对 require("./dom.js"); 执行任何操作 - app.js 无需依赖 dom.js。所以,您真正需要做的就是从 app.js.

中删除 require("./dom.js");