У меня странная проблема с требованием. У меня есть рабочее дерево, подобное следующему:
./chat/
|__ Chat.js
|__ User.js
|__ Message.js
./index.js
Каждый файл в каталоге чата - это классы, например:
// some requires
class Chat {
constructor {...}
// some methods
}
module.exports = Chat;
Требуется нормально работать ... кроме чата. Например, у меня есть что-то вроде этого:
const Chat = require("./Chat");
const Message = require("./Message");
class User {
constructor() {
console.log(Message); // print: [Function: Message]
console.log(Chat); // print: {}
}
}
module.exports = User;
Это работает для сообщений, но не для чата. И, что еще более странно, в другом файле, а не в этом каталоге, он работает!
У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: Здесь сообщение. js
"use strict";
const User = require("./User");
const InvalidTypeError = require("../error/InvalidTypeError");
class Message {
/**
* @param {User} sender
* @param {string} message
* @param {string} ip
*/
constructor(sender, message, ip) {
if (!(sender instanceof User)) {
throw new InvalidTypeError("Must pass a User object");
}
this.timestamp = Date.now();
this.sender = sender;
this.message = message;
this.ip = ip;
}
/**
* @returns {number}
*/
getTimestamp() {
return this.timestamp;
}
/**
* @returns {User}
*/
getSender() {
return this.sender;
}
/**
* @returns {string}
*/
getMessage() {
return this.message;
}
/**
* @returns {string}
*/
getIp() {
return this.ip;
}
}
module.exports = Message;
РЕШЕНО: эта проблема вызвана циклической зависимостью