Jest 运行测试时出现 "Could not locate module" 的解决方法

Jest 是一个广泛使用的 JavaScript 测试框架,它不仅易于使用和配置,还能一次编写,多平台运行,能够帮助开发人员优化开发效率,提高代码质量。然而在使用 Jest 运行测试时,会遇到 "Could not locate module" 的错误提示,这时候我们该如何解决呢?

问题详述

通常情况下,出现 "Could not locate module" 的错误,它的原因是因为 Jest 无法找到引入的模块或包,或者我们需要手动配置 Jest 的 modulePaths 让 Jest 能够找到相关模块或包。

解决方案

确认所需的模块或包已经正确安装

首先我们需要确认我们所需的模块或包已经正确安装了,可以通过 npm 或 yarn 安装该模块或包,也可以通过直接将该模块或包放到项目中。

--- ------- -----------
---- --- -----------

确认包的路径是否正确

通常出现 "Could not locate module" 的错误可能是因为我们引入模块或包的路径不正确,所以需要确保我们的引入路径是正确的。

举个例子,假如我们需要引入一个叫做 example-module 的模块,因为它是在 node_modules 目录下,我们可以直接这么引入:

----- ------- - --------------------------

如果这个模块在 src 目录下,那么我们需要这么引入:

----- ------- - ---------------------------------

配置 modulePaths

如果模块或包的引用路径正确,但是 Jest 仍然找不到它们,我们可以尝试配置 Jest 的 testEnvironment,让 Jest 能够开启 modulePaths 选项实现额外的搜索路径。

只需要在 jest.config.js 文件中添加 modulePaths 属性即可,比如我们要将 src 目录和 tests 目录添加到搜索路径中。

-------------- - -
  -- ---
  ------------ -
    ----------------
    ------------------
  --
--

这个解决方法应能解决 JEST 错误日志中提示的路径无法查找到相应的代码文件的情况,比如:Could not locate module @xxx/xxxx

结论

在使用 Jest 运行测试时, "Could not locate module" 的错误提示可能是由于无法找到引入的模块或包,或者是我们需要手动配置 Jest 的 modulePaths 让 Jest 能够找到相关模块或包。如果您遇到了这个问题,可以参考上面的解决方案解决问题。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6736ef950bc820c5825731a7