Typescript 类构造函数不能在没有';新';用于TSdx包
我为一个小记者创建了一个npm包。如果我在另一个项目中使用这个包,我会得到以下错误Typescript 类构造函数不能在没有';新';用于TSdx包,typescript,babeljs,commonjs,tsdx,Typescript,Babeljs,Commonjs,Tsdx,我为一个小记者创建了一个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
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 {
// ...
}
如中所述,可以通过设置Babel进行修复。但我找不到TSdx文档的有效解决方案
如何配置TSdx构建
您可以使用监视模式再现问题
$ 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
)
或者,您可以将Babel配置文件.babelrc
添加到TDdx项目中,并设置目标环境
{
"presets": [
["@babel/preset-env", { "targets": { "esmodules": true } }]
]
}
在没有
卷展栏
但使用tsc
作为transpiler的环境中,设置compilerOptions.target=“ES6”
可以解决此问题。但事实并非如此;t有关TSdx构建的帮助:/
{
"presets": [
["@babel/preset-env", { "targets": { "esmodules": true } }]
]
}