【问题标题】:Detect circular dependencies in project检测项目中的循环依赖
【发布时间】:2018-07-11 21:26:06
【问题描述】:

上次我在我的项目中发现循环依赖的问题。我解决了我的问题,但是,我想在将来避免这种情况。 我考虑在我的所有项目中发现循环依赖的插件并给我反馈。

例子:

文件 a.js:

var functionFromA= require("./b.js");
console.log("file a", functionFromA);
module.exports = {functionFromA: functionFromA};

文件 b.js:

var functionFromB = require("./c.js");
console.log("file b", functionFromB );
module.exports = {functionFromB : functionFromB };

文件 c.js:

var functionFromC = require("./a.js");
console.log("file c", functionFromC );
module.exports = {functionFromC : functionFromC }

当我运行文件 a.js 时,我在控制台中看到:
文件 c {}
文件 b { functionFromC: {} }
归档一个 { functionFromB: { functionFromC: {} } }

我在 npm 中找到了“循环依赖插件”,但我不知道如何使用它? 可能有人有类似的问题并找到了解决方案?

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    您会发现这个其他工具很有用:https://www.npmjs.com/package/madge

    非常易于使用:madge --circular [directory] 为您提供位于[directory] 内的代码中的循环依赖项列表。它还可以生成图形图像。

    【讨论】:

    • 我真的很喜欢这个工具!只需几分钟即可解决我的问题
    【解决方案2】:

    正如 davidmpaz 所建议的,ma​​dge 是一个很好的工具,但它只检测循环依赖,并不能指出这些循环依赖是否会导致您的应用程序出现问题。

    我制作了一个工具来检测循环依赖,它会警告你由 cd 引起的问题。 https://www.npmjs.com/package/detect-circular-deps

    【讨论】:

    • 我想知道是否可以在运行时检测到 CD,当我们导入/需要动态模块时。
    • 循环依赖几乎总是表明一些考虑不周的应用程序/库结构。我倾向于madge 工具,因为如果循环依赖被删除,即使它们“工作”,代码通常会更清晰。
    • 是否可以让它在打字稿文件上工作?
    猜你喜欢
    • 2018-01-02
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2020-11-18
    • 2020-03-14
    • 2018-04-25
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多