0

我使用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继承自BaseReporterJest 提供的类。

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'
4

1 回答 1

2

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

$ npx tsdx build --target node

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

{
  "presets": [
    ["@babel/preset-env", { "targets": { "esmodules": true } }]
  ]
}
于 2020-09-29T08:56:47.337 回答