Я делаю чат на стороне сервера с Colyseus (узел игрового сервера). Я использую машинопись с модулем: commonjs, потому что colyseus построен на commonjs.
У меня есть класс ChatRoom
, который расширяет Colyseus.Room
.
Во время выполнения я получаю эту ошибку:
Class constructor Room cannot be invoked without 'new'.
И проблема в JavaScript:
function ChatRoom() {
return _super !== null && _super.apply(this, arguments) || this;
}
из класса машинописи:
import {Room} from "colyseus";
export class ChatRoom extends Room {
onInit(options) {
console.log("BasicRoom created!", options);
}
onJoin(client) {
this.broadcast(`${ client.sessionId } joined.`);
}
onLeave(client) {
this.broadcast(`${ client.sessionId } left.`);
}
onMessage(client, data) {
console.log("BasicRoom received message from", client.sessionId, ":", data);
this.broadcast(`(${ client.sessionId }) ${ data.message }`);
}
onDispose() {
console.log("Dispose BasicRoom");
}
}
Ошибка легко пропускается при удалении проблемной строки после компиляции. Но базовый класс не создан, и это не полное решение.
Я гуглил проблему, и, похоже, это связано с транспортерами вавилона, хотя я не использую вавилон. Я использую только tsc / tsconfig.json.