如果没有TSdx包的“ new”,则不能调用类构造函数

时间:2020-09-28 09:19:16

标签: typescript babeljs commonjs tsdx

我使用TSdx为一个小型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类。

import BaseReporter from '@jest/reporters/build/base_reporter';

export class ExampleReporter extends BaseReporter {
  // ...
}

Class constructor cannot be invoked without 'new'中所述,可以通过设置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'

1 个答案:

答案 0 :(得分:0)

您只需设置--target node即可解决此问题(因为默认值为browser)。

$ npx tsdx build --target node

或者,您可以将Babel配置文件.babelrc添加到TDdx项目并设置目标环境。

{
  "presets": [
    ["@babel/preset-env", { "targets": { "esmodules": true } }]
  ]
}