Colyseus.js class 构造函数无法在没有 'new' 的情况下被调用,尽管目标:"es6"
Colyseus.js class constructor cannot be invoked without 'new' despite target: "es6"
我有一个 TypeScript 浏览器游戏设置,它使用 Colyseus.js 作为多人游戏框架,并使用 webpack 5 和 ts-loader 进行捆绑。
当我 运行 代码时,我收到此错误消息:
Uncaught (in promise) Error: Class constructor Room cannot be invoked without 'new'
at new MatchMakeError (colyseus.js:4752)
at Client.<anonymous> (colyseus.js:4888)
at step (colyseus.js:90)
at Object.next (colyseus.js:71)
at fulfilled (colyseus.js:61)
我已经阅读了很多关于如何通过将 TypeScript 编译为 ES6 来解决这个问题的帖子。然而,我的 tsconfig.json
已经看起来像这样:
{
"compilerOptions": {
"target": "es6",
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true
}
}
我使用的 webpack:
resolve: {
extensions: [".ts", ".html", ".css"],
},
module: {
rules: [
{
test: /\.ts?$/,
use: [
{
loader: "ts-loader",
options: {
transpileOnly: true,
},
},
],
},
]
}
现在我在 webpack 输出中看到它正在使用这个:
../../node_modules/colyseus.js/dist/colyseus.js 213 KiB [built] [code
generated]
我的猜测是,Colyseus.js 被编译为目标 ES5 并使用了 var _this = _super.call(this, message) || this;
hack。然后我将我的代码编译为 ES6 并复制 Colyseus.js 代码,这些代码总的来说是不兼容的。
我该如何解决这个问题?我已经尝试将我的 tsconfig 中的目标设置为 es5,没有太大区别。其他人如何使用 webpack Colyseus.js?
刚弄明白:实际上这是服务器端代码(我在 node.js 中有)的响应,直到现在才编译为 es5。客户端/浏览器正在生成此日志,因为 Colyseus 的工作方式是将请求发送到后端,并在出现异常时将其作为结果传递给客户端。
我有一个 TypeScript 浏览器游戏设置,它使用 Colyseus.js 作为多人游戏框架,并使用 webpack 5 和 ts-loader 进行捆绑。
当我 运行 代码时,我收到此错误消息:
Uncaught (in promise) Error: Class constructor Room cannot be invoked without 'new'
at new MatchMakeError (colyseus.js:4752)
at Client.<anonymous> (colyseus.js:4888)
at step (colyseus.js:90)
at Object.next (colyseus.js:71)
at fulfilled (colyseus.js:61)
我已经阅读了很多关于如何通过将 TypeScript 编译为 ES6 来解决这个问题的帖子。然而,我的 tsconfig.json
已经看起来像这样:
{
"compilerOptions": {
"target": "es6",
"moduleResolution": "node",
"esModuleInterop": true,
"skipLibCheck": true
}
}
我使用的 webpack:
resolve: {
extensions: [".ts", ".html", ".css"],
},
module: {
rules: [
{
test: /\.ts?$/,
use: [
{
loader: "ts-loader",
options: {
transpileOnly: true,
},
},
],
},
]
}
现在我在 webpack 输出中看到它正在使用这个:
../../node_modules/colyseus.js/dist/colyseus.js 213 KiB [built] [code generated]
我的猜测是,Colyseus.js 被编译为目标 ES5 并使用了 var _this = _super.call(this, message) || this;
hack。然后我将我的代码编译为 ES6 并复制 Colyseus.js 代码,这些代码总的来说是不兼容的。
我该如何解决这个问题?我已经尝试将我的 tsconfig 中的目标设置为 es5,没有太大区别。其他人如何使用 webpack Colyseus.js?
刚弄明白:实际上这是服务器端代码(我在 node.js 中有)的响应,直到现在才编译为 es5。客户端/浏览器正在生成此日志,因为 Colyseus 的工作方式是将请求发送到后端,并在出现异常时将其作为结果传递给客户端。