Sus*_* -- 5 javascript typescript jestjs
我一直在研究 React Typescript 存储库,并且遇到了一个恼人的问题,即开玩笑时无法解析相对于根目录的导入。
Cannot find module '~lib/dates' from 'utils.ts'
Run Code Online (Sandbox Code Playgroud)
这就是组件/实用程序中导入的样子
import { abc } from '~lib/dates'; // this fails to run
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为相对路径,玩笑测试将按预期运行
import { abc } from '../../lib/dates'; // this runs as expected
Run Code Online (Sandbox Code Playgroud)
同样的路径适用于其他一些目录,我有点困惑
import { xyz } from '~components/home/constants'; // jest resolves it
import { abc } from '~lib/dates'; // ERR
Run Code Online (Sandbox Code Playgroud)
我尝试将其包含moduleNameWrapper在 jestConfig 中,看看它是否可以正确解析导入,但没有帮助。
包.json
"jest": {
...
"moduleNameWrapper": {
"^~(.*)$": "<rootDir>/src/$1"
}
}
Run Code Online (Sandbox Code Playgroud)
我肯定可以更新 VS 代码设置,以便自动导入相对于文件而不是根目录进行解析,但这已经困扰我一段时间了。如果有人能指导如何最好地解决这个问题,那就太好了。
我在一个具有以下目录结构的 monorepo 上
repo
server
client
src
components
lib
utils
package.json
Run Code Online (Sandbox Code Playgroud)
您的实现看起来是正确的。但看起来这个选项moduleNameWrapper是错误的,它应该是moduleNameMapper。
我也有一个和你一样的例子,它也使用 babel 作为转换器,它工作得很好,就像我添加的那样moduleNameMapper。这是我的例子:
笑话配置:
https://github.com/tmhao2005/lerna-demo/blob/master/packages/share/jest.config.js
这是用于测试的文件:
https://github.com/tmhao2005/lerna-demo/blob/master/packages/helper/src/index.ts https://github.com/tmhao2005/lerna-demo/blob/master/packages/helper/src /index.test.ts
| 归档时间: |
|
| 查看次数: |
30453 次 |
| 最近记录: |