使用 ESM 时,Mocha 因 Typegoose 出现“未找到命名导出‘Ref’”错误而失败

问题描述 投票:0回答:1

我有一个使用 ESM 用 TypeScript 编写的项目。其中一些使用 Typegoose。项目代码库构建良好并运行完美,但 Mocha 无法运行测试并出现以下错误:

语法错误:未找到命名导出“Ref”。请求的模块“@typegoose/typegoose”是一个 CommonJS 模块,它可能不支持所有 module.exports 作为命名导出。 CommonJS 模块始终可以通过默认导出导入,例如使用:

从'@typegoose/typegoose'导入pkg; const { modelOptions, prop, plugin, getModelForClass, Ref, } = pkg;

即使我使用替代的导入方法,我仍然会收到有关未找到 Ref 的错误。这是我唯一有问题的 Typegoose 作品。如果我不使用 Ref Mocha,测试任何依赖于 Typegoose 的其他代码都没有问题。

tsconfig.json 有以下设置:

"module": "esnext"
"moduleResolution": "node"

package.json 有以下设置:

"type": "module",

.mocharc.jsonc 有以下集合:

  "node-option": ["experimental-specifier-resolution=node", "loader=ts-node/esm"],

有谁知道如何解决这个问题吗?由于代码在 Mocha 之外运行良好,我认为这是我缺少的某种配置,但我无法弄清楚它可能是什么。

typescript mocha.js es6-modules typegoose
1个回答
0
投票

好的,在 Typegoose 人员的帮助下,我找到了原因:我的 tsconfig.json 将“transpileOnly”指定为 true,这导致类型错误地导入。将“transpileOnly”设置为 false 解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.