Class 没有 'new' 的情况下无法为 TSdx 包调用构造函数
Class constructor cannot be invoked without 'new' for TSdx package
我使用 TSdx for a small Jest 记者创建了一个 npm 包。如果我在另一个项目中使用该包,我会收到以下错误。
Uncaught TypeError: Class constructor BaseReporter cannot be invoked without 'new'
at new ExampleReporter (..\dist\example-reporter.cjs.development.js:37:26)
ExampleReporter
继承自Jest提供的BaseReporter
class
import BaseReporter from '@jest/reporters/build/base_reporter';
export class ExampleReporter extends BaseReporter {
// ...
}
如所述,可以通过设置Babel来解决。但是我无法通过 TSdx 文档找到可行的解决方案。
如何配置 TSdx build
?
您可以使用监视模式重现该问题。
$ npx tsdx watch --onSuccess node .
...
Watching for changes
Welcome to Node.js v12.18.2.
Type ".help" for more information.
> new (require('.').ExampleReporter)()
Uncaught TypeError: Class constructor BaseReporter cannot be invoked without 'new'
您只需设置 --target node
即可解决此问题(因为默认值为 browser
)。
$ npx tsdx build --target node
或者,您可以将 Babel 配置文件 .babelrc
添加到您的 TDdx 项目并设置您的目标环境。
{
"presets": [
["@babel/preset-env", { "targets": { "esmodules": true } }]
]
}
我使用 TSdx for a small Jest 记者创建了一个 npm 包。如果我在另一个项目中使用该包,我会收到以下错误。
Uncaught TypeError: Class constructor BaseReporter cannot be invoked without 'new'
at new ExampleReporter (..\dist\example-reporter.cjs.development.js:37:26)
ExampleReporter
继承自Jest提供的BaseReporter
class
import BaseReporter from '@jest/reporters/build/base_reporter';
export class ExampleReporter extends BaseReporter {
// ...
}
如
如何配置 TSdx build
?
您可以使用监视模式重现该问题。
$ npx tsdx watch --onSuccess node .
...
Watching for changes
Welcome to Node.js v12.18.2.
Type ".help" for more information.
> new (require('.').ExampleReporter)()
Uncaught TypeError: Class constructor BaseReporter cannot be invoked without 'new'
您只需设置 --target node
即可解决此问题(因为默认值为 browser
)。
$ npx tsdx build --target node
或者,您可以将 Babel 配置文件 .babelrc
添加到您的 TDdx 项目并设置您的目标环境。
{
"presets": [
["@babel/preset-env", { "targets": { "esmodules": true } }]
]
}