我有一个打字稿项目,该项目需要一个个人库,该库要从作为commonjs lib构建的git repo添加到我的package.json
中。当我运行构建脚本./node_modules/.bin/webpack -d --config webpack/webpack.dev.js
时,所有内容均可正确编译。但是,当我开玩笑jest --config front/jest.config.js
时,它会引发以下错误:
● Test suite failed to run
TypeError: dumblib_1.default is not a constructor
12 | const dumblib = new DumbLib(vars)
当进入lib的入口点时,该入口只是从es6编译为commonjs的节点项目,该捆绑包会在文件末尾显示此内容:
module.exports = DumbLib;
该库不是打字稿,所以我在主项目中有一个用于dumblib导入的打字文件。
declare module 'dumblib' {
.
.
.
export default class DumbLib {
constructor(vars: Vars)
.
.
.
}
}
就像我说的那样,打字稿编译器似乎将其视为一切都能正确编译。但是,开玩笑不断抛出该错误。我有什么特别的玩笑可以识别我的打字?还是我可能没有看到其他不一致之处?
答案 0 :(得分:1)
这里的问题是模块的实际导出与键入不匹配。由于类型(您说export default
),TypeScript期望从模块中进行“默认”导出,但是整个模块类内部就是整个导出。
做以下两件事应该会有所帮助:
import * as dumblib from "dumblib";
declare module 'dumblib' {
class DumbLib {
// ...
}
namespace DumbLib {
interface Foo {
bar: string
}
}
export = DumbLib
}