导出的对象 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");
我的 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");