Javascript Jest测试运行-找不到模块错误
我一直在做React-Typescript repo,遇到了一个恼人的问题,jest无法解决相对于根目录的导入Javascript Jest测试运行-找不到模块错误,javascript,typescript,jestjs,Javascript,Typescript,Jestjs,我一直在做React-Typescript repo,遇到了一个恼人的问题,jest无法解决相对于根目录的导入 Cannot find module '~lib/dates' from 'utils.ts' 这就是导入在组件/utils中的样子 import { abc } from '~lib/dates'; // this fails to run 如果我将其更改为相对路径,jest测试运行将按预期工作 import { abc } from '../../lib/dates';
Cannot find module '~lib/dates' from 'utils.ts'
这就是导入在组件/utils中的样子
import { abc } from '~lib/dates'; // this fails to run
如果我将其更改为相对路径,jest测试运行将按预期工作
import { abc } from '../../lib/dates'; // this runs as expected
同样的路径适用于其他一些目录,我有点不知所措
import { xyz } from '~components/home/constants'; // jest resolves it
import { abc } from '~lib/dates'; // ERR
我尝试在jestConfig中包含moduleNameWrapper
,以查看它是否可以正确解析导入,但没有帮助
package.json
"jest": {
...
"moduleNameWrapper": {
"^~(.*)$": "<rootDir>/src/$1"
}
}
忘记
~
字符
首先开玩笑(即src/
)
然后从根目录导入你的东西;(例如,从'lib/dates'导入{abc}
)
顺便说一句,您可以始终从默认根目录导入您的内容,而无需任何如下配置:import{abc}from'src/lib/dates'
如果您正在使用create react app,请进一步阅读,忘记
~
字符
首先开玩笑(即src/
)
然后从根目录导入你的东西;(例如,从'lib/dates'导入{abc}
)
顺便说一句,您可以始终从默认根目录导入您的内容,而无需任何如下配置:import{abc}from'src/lib/dates'
如果您使用的是create react app,请进一步阅读,您的实现看起来是正确的。但是看起来选项
moduleNameWrapper
是错误的选项,应该是moduleNameMapper
我还有一个和你一样的例子,它也使用babel作为transplier,当我添加了moduleNameMapper
时,它工作得很好。以下是我的例子:
Jest配置:
以下是用于测试的文件:
您的实现看起来是正确的。但是看起来选项
moduleNameWrapper
是错误的选项,应该是moduleNameMapper
我还有一个和你一样的例子,它也使用babel作为transplier,当我添加了moduleNameMapper
时,它工作得很好。以下是我的例子:
Jest配置:
以下是用于测试的文件:
您的回购结构是什么样的?您使用的是哪种传送器?Babel还是Tsc?我使用的是mono回购协议,Babel作为一种传输工具。将用目录结构更新帖子。您的回购结构是什么样子的?您使用的是什么transpiler?Babel还是Tsc?我使用的是mono回购协议,Babel作为一种传输工具。将使用目录结构更新帖子。根目录已在repo中定义,即
/src
,在本例中为客户端目录。这不是关于导入,而是如何解决自动导入以使用IDE。检查所有文件,然后更新导入是一件痛苦的事情。此外,我们在不使用create react app
@Sushanth的情况下剥离了repo——如果根目录为jest正确定义,那么您可以直接跳到步骤2。问题是,如果这是一个个人项目,我不介意这样做。但对于团队中的其他成员来说,这并不是个人的偏好。很确定这会奏效,但这不是我真正想要的答案。还有一个要点是,继续更新大约400个不同的版本是一件痛苦的事情files@Sushanth--嗯,是的,手动更换是不现实的。顺便说一句,如果您没有找到您要查找的答案,请尝试在导入URL的编辑器搜索和替换功能中将“~
替换为src/
,如果根目录设置正确,此更改不会破坏任何内容。根目录已在repo中定义,即/src
,在本例中,是客户端目录。这不是关于导入,而是如何解决自动导入以使用IDE。检查所有文件,然后更新导入是一件痛苦的事情。此外,我们在不使用create react app
@Sushanth的情况下剥离了repo——如果根目录为jest正确定义,那么您可以直接跳到步骤2。问题是,如果这是一个个人项目,我不介意这样做。但对于团队中的其他成员来说,这并不是个人的偏好。很确定这会奏效,但这不是我真正想要的答案。还有一个要点是,继续更新大约400个不同的版本是一件痛苦的事情files@Sushanth--嗯,是的,手动更换是不现实的。顺便说一句,如果你没有找到你想要的答案,试着用导入URL中的src/
替换'~
,使用编辑器搜索和替换功能,如果根目录设置正确,这个更改不会破坏任何东西。我是怎么想的。我完全忽略了API,这一点我从未想过。在更新选项名称后尝试,并且有效。非常感谢!我在想什么。我完全忽略了API,这一点我从未想过。在更新选项名称后尝试,并且有效。非常感谢!
repo
server
client
src
components
lib
utils
package.json