我目前正在为 TypeScript 中的 API 编写包装器,但在构建后尝试在 CommonJS 中使用所述包装器时遇到问题。
我有一个班级位于
BattleMetrics.ts
;
export default class BattleMetrics {
private axios: any;
constructor(token: string) {
....
}
}
然后将该类导入到主文件中,并默认导出;
import BattleMetrics from './src/BattleMetrics';
export default BattleMetrics;
但是,一旦构建完成,如果我制作一个
test.js
文件并按照 的方式编写一些内容
const BattleMetrics = require('../../dist/index.js')
const bm = new BattleMetrics('123')
我会得到错误
TypeError: BattleMetrics is not a constructor
但是,如果我在打字稿中进行相同的测试,它就可以正常工作。在 CommonJS 中,我需要使用
bm = new BattleMetrics.default()
才能使其工作,但我真的宁愿避免这样做。
如果我编辑编译后的index.js,在.export 前面添加“模块”,它会按预期工作。
我如何解决这个问题,以便在需要时基本文件可以在 commonJS 和 TypeScript 中工作
更改了 tsconfig 中的导出类型等,但未找到解决方案。
You can modify your main file to export it as a default export like this
// main.ts
import BattleMetricsClass from './src/BattleMetrics';
export { BattleMetricsClass as BattleMetrics };
// test.ts
const { BattleMetrics } = require('../../dist/index.js');
const bm = new BattleMetrics('123');