Jest 以不同于 Node.js 的顺序解析模块路径

Jest resolves module paths in different order than Node.js

在我的 Node.js 项目中,我安装了一个 passport 包和我自己的 config/passport.js 文件,其中配置了 Passport 策略以及 config/config.js 中的应用程序配置。

我将 NODE_PATH 设置为 app:config(我在 Ubuntu 16.04)所以当我 运行 使用 Node 的应用程序时,我可以 require('passport') 需要 Passport.js 包并且 require('config') 需要我的应用程序的配置。

到目前为止一切顺利,但是当我 运行 使用 Jest 进行测试并将我的 modulePaths 设置为 appconfig 时,require('passport') 调用解析到 config/passport.js 这(如您所想)使应用程序崩溃。

为什么 Jest 在需要包时会在 node_modules 之前查看 modulePaths?这怎么能解决呢?我尝试将 node_modules 添加到 Jest 的 modulePaths,但它造成的麻烦多于解决的问题。 我尝试查看 Jest 的代码但没有结果。

所以 Jest 只是按照我在问题中描述的顺序加载模块。

对于解决类似问题的任何人 - 这在未来应该不再是问题,因为我创建了一个问题和 PR,该问题和 PR 已被批准并合并到 Jest 的主人。

https://github.com/facebook/jest/issues/5377

它现在是 Jest 的一部分 - 版本 22.2.0 和更新版本。