I am making server side chat with colyseus (node game server framework). Im using typescript with module:commonjs because colyseus is built upon commonjs.
I have class ChatRoom
that extends Colyseus.Room
.
At run-time I get this error:
Class constructor Room cannot be invoked without 'new'.
And the trouble in javascript:
function ChatRoom() {
return _super !== null && _super.apply(this, arguments) || this;
}
from typescript class:
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");
}
}
The error is easily skipped when troubled row is removed after compilation. But the base class is not created and this is not a complete solution.
I googled the issue and it seems to relate to babel transpiler, though I don't use babel. I only use tsc / tsconfig.json.