为什么我的Node.js本地模块导入不一致?

史诗般的莱恩

由于在Node.js中导入/导出模块中的某些严重不一致性,我在这里真的很受苦。

很容易看到:

//game.js

const {Player} = require("./player");

{...}

console.log(Player); //outputs undefined


//player.js

class Player {
    constructor(client, host = false) {
        this.properties = {...client};
        this.host = host;

        this.hand = [];
    }
    {...}
}

module.exports = {Player};

这看起来不错,但这是最奇怪的部分。在另一个文件中deck.js,我以完全相同的方式导出。并且它在中被正确识别game.js

//game.js

const {Deck} = require("./deck");

console.log(Deck); //outputs "[Function: Deck]"


//deck.js

class Deck {
    constructor() {
        this.deck = [...compressed_cards];

        this.shuffle();
    }
    {...}
}

module.exports = {Deck};

如您所见,这些都是本地文件。尽管方法完全相同,我也可以导入deck.js,但不能导入player.js。我已经尝试过module.exports.Player = Player,我已经直接设置好了module.exports.Player = class Player {...},但是它似乎没有用。谁能弄清楚这一点并使我看起来像个白痴,谢谢。

哦,令我感到困惑的是,我可以将player.js其他文件导入到文件之外但不在里面。为什么。当然,我所有其他文件都可以完全相同的方式相互访问,而没有任何问题。

文件结构如下所示:

这个

血栓

原因可能是您具有循环依赖关系。这意味着player.js可能需要game.jsdeck.js,这样当您在需要彼此的文件之间绘制线时,您将看到一个完整的圆圈。建议是重新构建依赖关系,以避免这种依赖关系结构。

此处讨论有关循环/循环依赖的更多信息:如何在Node.js中处理循环依赖

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章