node.js - 当一个模块位于另一模块的父目录中时,模块之间存在循环依赖关系,导入的模块是未定义的

标签 node.js circular-dependency

文件结构为

-src
--Visitor
---visitor.model.js
---Sessions
----session.model.js

在visitor.model.js文件中

const {Sessions} = require('./Sessions/session.model');
const Visitor = {};

Visitor.visitorFunc = () => {


}

Sessions.sessionFunc();

module.exports = {Visitor: Visitor};

在session.model.js文件中

const {Visitor} = require('../visitor.model.js');

const Session = {};

Sessions.sessionFunc = () => {

}

Visitor.visitorFunc();

module.exports = {Session: Session};

当我在访问者文件中进行这样的导入时, session 未定义。原因是什么..它是递归调用 import 吗?

最佳答案

Node 中允许循环依赖

https://nodejs.org/api/modules.html#modules_cycles

When main.js loads a.js, then a.js in turn loads b.js. At that point, b.js tries to load a.js. In order to prevent an infinite loop, an unfinished copy of the a.js exports object is returned to the b.js module. b.js then finishes loading, and its exports object is provided to the a.js module.

由于 SessionVisitor 听起来像是具有 M:N 关系的数据库模型,因此循环依赖是可行的方法(例如:Join 查询)

How to deal with cyclic dependencies in Node.js

Node.js Module.Exports Undefined Empty Object

但如果可以的话,避免它们会不会那么困惑。

关于node.js - 当一个模块位于另一模块的父目录中时,模块之间存在循环依赖关系,导入的模块是未定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54174406/

相关文章:

java - 摆脱循环依赖

python - 尝试避免 Python 循环依赖

C++:外部对象循环引用

Python相互依赖类(循环依赖)

javascript - Angular js 无法从 Node js 获取 json 响应

mysql - 无法从 node.js 服务器连接到本地主机数据库

javascript - 同步功能无法相应地工作

javascript - 使用 NodeJS 向 JSON 文件键添加新属性

javascript - 使用 NodeJS/Express 应用程序保护 AJAX 调用

c++ - 模板、循环依赖、方法,天哪!