gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:00 24 4
gpt4 key购买 nike

文件结构为

-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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com