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`,从而打破了循环。