循环依赖问题(无法在初始化前访问 X)

Problem with circular dependencies (Cannot access X before initialisation)

我在解决 my other problem 后遇到了一个问题。修复后,出现了一个关于循环依赖的问题:

ReferenceError: Cannot access 'Wallet' before initialization

您可以在 GitHub 上找到代码,因为此问题涉及多个文件。有问题的错误首先指向 /src/Wallet.ts:1:1,然后指向 /src/NETWORK_WALLET.ts:3:28/src/Transaction.ts:3:28。我试图四处移动 import 语句,这解决了一个特定情况,但没有解决另一个问题,并且在对该链执行相同操作后,根本无法解决任何问题。

例如,Wallet.ts:

import { generateKeyPairSync } from "crypto";
import Chain from "./Chain";
import Transaction from "./Transaction";

Transaction.ts:

import { v4 as uuidv4 } from "uuid";
import { createHash, createSign, createVerify } from "crypto";
import NETWORK_WALLET from "./NETWORK_WALLET";
import Wallet from "./Wallet";
import Chain from "./Chain";

NETWORK_WALLET.ts:

import Wallet from "./Wallet";

const NETWORK_WALLET = new Wallet();

export default NETWORK_WALLET;

解决了!感谢 by @kellys,以及由于我的无知而进行的一个小时的调试,我能够在我的主目录中创建一个名为 internal.ts 的文件,该文件从我的模块中导入所有 类 并导出它们一次全部加载,在其他模块调用之前加载所有模块,并且还让我能够选择加载顺序。这节省了我很多时间去寻找我自己的解决方案,并且真正整理了我的代码。

这里是internal.ts:

import { getHash, makeRoot, calculateHash } from './src/utils';
import Block from './src/Block';
import Chain from './src/Chain';
import Transaction from './src/Transaction';
import Wallet from './src/Wallet';
import MerkleNode from './src/MerkleNode';
import MerkleTree from './src/MerkleTree';
import NETWORK_WALLET from './src/NETWORK_WALLET';
import { create } from './src/newWallet';

export { getHash, makeRoot, calculateHash, Block, Chain, Transaction, Wallet, MerkleNode, MerkleTree, NETWORK_WALLET, create };

我可以在另一个文件中加载模块,就像我在 /src/Chain.ts:

中所做的那样
import { calculateHash, NETWORK_WALLET, Block, Transaction } from '../internal';
// ...