跳至内容

import/no-cycle 限制

作用

确保没有经由该模块的依赖关系返回到这个模块的可解析路径。

如果未设置 maxDepth 选项,则这包括深度为 1(导入模块导入我)到“∞”(或无穷大)的循环。

为什么这是不好的?

依赖循环会导致混乱的架构,很难找到 bug。通常会导入一个由循环依赖导致的未定义值。

示例

本规则不正确的代码示例

javascript
// dep-b.js
import "./dep-a.js";
export function b() {
  /* ... */
}
javascript
// dep-a.js
import { b } from "./dep-b.js"; // reported: Dependency cycle detected.
export function a() {
  /* ... */
}

在这个示例中,`dep-a.js` 和 `dep-b.js` 相互导入,创建了一个循环依赖,这会带来问题。

本规则正确的代码示例

javascript
// dep-b.js
export function b() {
  /* ... */
}
javascript
// dep-a.js
import { b } from "./dep-b.js"; // no circular dependency
export function a() {
  /* ... */
}

在这个更正的版本中,`dep-b.js` 不再导入 `dep-a.js`,从而打破了循环。

参考

在 MIT 许可下发布。