在问这个问题之前,我检查了类似的主题,并尝试了典型的解决方案。
我知道"module": "ESXXXX"
在TypeScript配置中的常见原因是什么。在我的例子中,我有错误
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for D:\IntelliJ IDEA\XXXXXX\node_modules\tsconfig-paths\src\__tests__\config-loader.test.ts
在"module": "ESnext"
和"module": "CommonJS"
两种情况下。
典型的解决方案之一是使用ts节点/esm。首先,这个特性是实验性的。接下来,它只是将一个错误替换为另一个错误:
(node:24788) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
× 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
版本
Mocha配置
extension:
- ts
spec: "**/*.test.ts"
require:
- ts-node/register
- tsconfig-paths/register
loader: ts-node/esm # Tried with and without
发布于 2022-05-17 22:54:39
我使用的配置与您的相同,但只有当我降级为ts-node@9时,它才能工作,然后我在我的.mocharc.json
中尝试了这个选项,现在它正像我所期望的那样工作。
{
"extensions": ["ts"],
"spec": ["**/*.spec.*"],
"node-option": [
"experimental-specifier-resolution=node",
"loader=ts-node/esm"
]
}
发布于 2022-03-18 06:18:00
你有tsconfig.json
吗?在这方面,这一解决办法可能有所帮助:
{
"compilerOptions": {
"esModuleInterop": true,
}
}
这里是一条有趣的线索,它提供了另一种解决方案。在这种情况下,tsconfig
有一个如下所示的包含:
"include": [
"./**/*.ts"
]
这两种选择之一是可行的,但请告诉我。不知道你的配置是什么样子。
发布于 2022-06-01 06:34:56
我也犯了同样的错误,设置NODE_OPTIONS
env来指定加载程序是有效的:
NODE_OPTIONS="--loader ts-node/esm" mocha
从这里拍摄:https://typestrong.org/ts-node/docs/imports#native-ecmascript-modules
它还可以帮助升级到ts-node 10.8.0的最新版本。
https://stackoverflow.com/questions/71378840
复制相似问题