你如何解决节点中的循环依赖问题

How do you fix this circular dependency issue in node

` 我收到错误,例如 Type variable is undefined 和 getLastUnknownAlbumTrackNumber is not a function

我安装了madge来检查循环依赖,但我不知道如何解决它们

以下是 madge

的输出
const madge = require('madge');

madge('./server.js').then((res) => {
    console.log(res.circular());
});

OUTPUT:
(node:6960) Warning: Accessing non-existent property 'getLastUnknownAlbumTrackNumber' of module exports inside circular dependency
(node:6960) Warning: Accessing non-existent property 'Type' of module exports inside circular dependency
[
[ 'jobs/index.js', 'models/index.js' ],
[ 'models/index.js', 'services/metadata.js' ]
]

以下是相关的进出口

jobs/index.js

const { getMovieMetaData, getTVShowMetaData, getAlbumMetaData } = require('../models');
...
module.exports = { getAll, upsertAll, getLastUnknownAlbumTrackNumber }

services/metadata.js

const { Type } = require('../models');
...
module.exports = Metadata

models/index.js

const { getLastUnknownAlbumTrackNumber } = require('../jobs');
const metadataServiceConstructor = require('../services/metadata');
const metadataService = new metadataServiceConstructor()
...
module.exports = { Type, getMovieMetaData, getTVShowMetaData, getAlbumMetaData }

你希望发生什么?尝试解决循环导入会导致无限递归。

即使你用这个工具来检查循环导入,它也不是静态分析,所以代码仍然需要运行,所以你遇到同样的问题。

附带说明一下,您为什么要使用此工具?很明显循环导入在哪里。您需要重构以避免这种情况。