You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Jest能运行存在错误导入语句的代码?

问题原因解析

这是因为Jest的模块解析机制和Node.js原生ES模块的规则存在核心差异:

  • Jest的自动扩展名补全逻辑:
    Jest默认自带一套模块解析策略,会自动为不带扩展名的导入路径尝试补全常见文件扩展名。它的默认moduleFileExtensions配置包含了js、mjs、cjs等多种格式,当你写import foo from './import'时,Jest会按顺序尝试查找./import.js、./import.mjs等文件,因此能成功匹配到实际存在的./import.js。

  • Node.js ES模块的严格解析要求:
    Node.js在处理ES模块(即package.json中type设为module的场景)时,严格遵循ES模块规范,要求导入路径必须包含完整的文件扩展名。如果省略扩展名,Node.js不会自动尝试补全,直接判定找不到对应模块,抛出ERR_MODULE_NOT_FOUND错误。

如果希望Jest的行为和Node.js保持一致,可以修改Jest配置:

  • 调整moduleFileExtensions,只保留你项目实际使用的扩展名
  • 使用jest-environment-node-esm环境,并配置extensionsToTreatAsEsm,让Jest按照ES模块的严格规则解析导入路径

内容的提问来源于stack exchange,提问作者jmsapt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:37:00