Gur*_*ofu 33 mocha.js typescript ts-node
在提出这个问题之前,我检查了类似的主题并尝试了典型的解决方案。
\n我知道 TypeScript 配置中的常见原因是什么"module": "ESXXXX"。\n就我而言,我遇到了错误
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for D:\\IntelliJ IDEA\\XXXXXX\\node_modules\\tsconfig-paths\\src\\__tests__\\config-loader.test.ts\nRun Code Online (Sandbox Code Playgroud)\n"module": "ESnext"在和两种"module": "CommonJS"情况下。
典型的解决方案之一是使用ts-node/esm。\n首先,此功能是实验性的。接下来,它只是将一个错误替换为另一个错误:
\n(node:24788) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time\n(Use `node --trace-warnings ...` to show where the warning was created)\n\n\xc3\x97 ERROR: CustomError: Cannot find module 'D:\\IntelliJ IDEA\\XXXXX\\node_modules\\tsconfig-paths\\register' imported from D:\\IntelliJ IDEA\\XXXXX\\node_modules\\mocha\\lib\\nodejs\\esm-utils.js\nRun Code Online (Sandbox Code Playgroud)\nextension:\n - ts\n\nspec: "**/*.test.ts"\n\nrequire:\n\n - ts-node/register\n - tsconfig-paths/register\n\nloader: ts-node/esm # Tried with and without\n\nRun Code Online (Sandbox Code Playgroud)\n
mar*_*ndt 23
我使用与您相同的配置,但它仅在我降级到 ts-node@9 时才起作用,然后我在我的中尝试了此选项,.mocharc.json现在它按我的预期工作
{
"extensions": ["ts"],
"spec": ["**/*.spec.*"],
"node-option": [
"experimental-specifier-resolution=node",
"loader=ts-node/esm"
]
}
Run Code Online (Sandbox Code Playgroud)
chr*_*rkl 12
我遇到了同样的错误,它对我来说设置NODE_OPTIONS环境变量来指定加载器:
NODE_OPTIONS="--loader ts-node/esm" mocha
Run Code Online (Sandbox Code Playgroud)
摘自这里:https ://typestrong.org/ts-node/docs/imports#native-ecmascript-modules
升级到最新版本的 ts-node 10.8.0 也可能有帮助
你有没有tsconfig.json。该解决方案可以在这里提供帮助:
{
"compilerOptions": {
"esModuleInterop": true,
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个关于它的有趣线程和替代解决方案。在这种情况下,它tsconfig的包含如下所示:
"include": [
"./**/*.ts"
]
Run Code Online (Sandbox Code Playgroud)
这两个选项之一应该可行,但请告诉我。不确定你的配置是什么样的。
如果您的任何依赖项是 ES6 模块(!),但您的 TypeScript 目标不是,则可能会发生这种带有mocha/ 的绝对误导性错误。ts-node例如,got@13.0.0安装软件包时:
\xe2\x9c\x97 npm run test \n\n> @mypackage@1.6.0 test\n> mocha -r ts-node/register tests/**/*.test.ts\n\n\nTypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /.../tests/index.test.ts\n...\nRun Code Online (Sandbox Code Playgroud)\n现在降级到npm i got@11,仍然提供 CommonJS 导出:
npm run test\n\n> @mypackage@1.6.0 test\n> mocha -r ts-node/register tests/**/*.test.ts\n\n// All right\nRun Code Online (Sandbox Code Playgroud)\n因此,解决这个恼人错误的“快速修复”可能是降级您刚刚升级的某个软件包(通常是主要版本)。这与got、node-fetch和其他决定仅发布 ES6 代码的软件包有关。
否则,您必须更新整个测试套件。我不知道针对此问题的mocha+ts-node设置有任何“最终”修复方法。其他一些测试套件与 ES6 deps 开箱即用,或者可以很好地配合使用,在一些项目中,我个人开始使用“transpile-then-test”方法,而不是直接在带有 runtime 的 TypeScript 源上进行vitest测试。playwrightts-node
| 归档时间: |
|
| 查看次数: |
38488 次 |
| 最近记录: |