首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ts节点和mocha 'TypeError [ERR_UNKNOWN_FILE_EXTENSION]:未知的文件扩展名".ts"‘错误,即使带有“ts-节点/esm”加载程序和CommonJS模块

ts节点和mocha 'TypeError [ERR_UNKNOWN_FILE_EXTENSION]:未知的文件扩展名".ts"‘错误,即使带有“ts-节点/esm”加载程序和CommonJS模块
EN

Stack Overflow用户
提问于 2022-03-07 09:23:48
回答 5查看 12.1K关注 0票数 12

在问这个问题之前,我检查了类似的主题,并尝试了典型的解决方案。

我知道"module": "ESXXXX"在TypeScript配置中的常见原因是什么。在我的例子中,我有错误

代码语言:javascript
运行
复制
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。首先,这个特性是实验性的。接下来,它只是将一个错误替换为另一个错误:

代码语言:javascript
运行
复制
(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

版本

  • 摩卡: 9.2.1
  • ts-节点: 10.7.0

Mocha配置

代码语言:javascript
运行
复制
extension:
  - ts

spec: "**/*.test.ts"

require:

  - ts-node/register
  - tsconfig-paths/register

loader: ts-node/esm # Tried with and without
EN

回答 5

Stack Overflow用户

发布于 2022-05-17 22:54:39

我使用的配置与您的相同,但只有当我降级为ts-node@9时,它才能工作,然后我在我的.mocharc.json中尝试了这个选项,现在它正像我所期望的那样工作。

代码语言:javascript
运行
复制
{
  "extensions": ["ts"],
  "spec": ["**/*.spec.*"],
  "node-option": [
    "experimental-specifier-resolution=node",
    "loader=ts-node/esm"
  ]
}
票数 7
EN

Stack Overflow用户

发布于 2022-03-18 06:18:00

你有tsconfig.json吗?在这方面,这一解决办法可能有所帮助:

代码语言:javascript
运行
复制
{
  "compilerOptions": {
    "esModuleInterop": true,
  }
}

这里是一条有趣的线索,它提供了另一种解决方案。在这种情况下,tsconfig有一个如下所示的包含:

代码语言:javascript
运行
复制
"include": [
    "./**/*.ts"
]

这两种选择之一是可行的,但请告诉我。不知道你的配置是什么样子。

票数 6
EN

Stack Overflow用户

发布于 2022-06-01 06:34:56

我也犯了同样的错误,设置NODE_OPTIONS env来指定加载程序是有效的:

代码语言:javascript
运行
复制
NODE_OPTIONS="--loader ts-node/esm" mocha

从这里拍摄:https://typestrong.org/ts-node/docs/imports#native-ecmascript-modules

它还可以帮助升级到ts-node 10.8.0的最新版本。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71378840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档