由于在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.js
或deck.js
,这样当您在需要彼此的文件之间绘制线时,您将看到一个完整的圆圈。建议是重新构建依赖关系,以避免这种依赖关系结构。
此处讨论有关循环/循环依赖的更多信息:如何在Node.js中处理循环依赖
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句