我正在使用 colyseus(node 游戏服务器框架)制作服务器端聊天。我在使用 typescript 和模块 commonjs,因为 colyseus 是基于 commonjs 构建的。
我有一个名为 ChatRoom 的类,它扩展了 Colyseus.Room。 在运行时,我收到以下错误:
我有一个名为 ChatRoom 的类,它扩展了 Colyseus.Room。 在运行时,我收到以下错误:
Class constructor Room cannot be invoked without 'new'.
而在JavaScript中的问题:
function ChatRoom() {
return _super !== null && _super.apply(this, arguments) || this;
}
来自 TypeScript 类:
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");
}
}
当编译完成后,删除出错行就可以轻松跳过错误。但是基类没有被创建,这不是一个完整的解决方案。
我通过谷歌查询了这个问题,似乎与Babel转换器有关,尽管我没有使用Babel。我只使用tsc / tsconfig.json。
target
的表格 https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping - Tamlyn