VS Code TypeScript Jest 模块映射
Posted
技术标签:
【中文标题】VS Code TypeScript Jest 模块映射【英文标题】:VS Code TypeScript Jest Module Mappings 【发布时间】:2019-09-29 01:44:40 【问题描述】:我在 VS 代码 中将 TypeScript 与 Jest 一起使用,并且我已经映射了一些模块路径以便于访问这些模块。
很简单,我的目录结构是这样的:
├── app
│ └── middleware
│ └── auth.ts
├── jest.config.js
├── package.json
├── package-lock.json
├── test
│ └── unittest
│ └── app
│ └── middleware
│ └── auth.test.ts
└── tsconfig.json
我的tsconfig.json
有这些映射:
"baseUrl": ".",
"paths":
"@app/*": [
"./app/*"
]
这些映射在我的jest.config.js
:
moduleNameMapper:
"^@app/(.*)$": "<rootDir>/app/$1"
一切正常,我可以毫无问题地运行 Jest,但是 VS 代码无法识别文件 auth.test.ts
中的 @app
映射(在 auth.ts
中它工作正常)。
有没有办法解决这个问题?
【问题讨论】:
【参考方案1】:您可以使用包module-alias 在运行时分配别名,然后利用 Jest 的 setupFile 选项确保它们始终在 Jest 运行时创建。
编辑:问题需要另一个解决方案,该解决方案已在 cmets 中针对此答案提出
【讨论】:
很抱歉,但这无济于事。因为这只会改变运行时行为(这很好,我的测试没有它就可以运行)并且 VS 代码无法识别插件。 对不起,那我误会了。那么我是否理解在您的auth.test.ts
VSCode 中没有检测到@app/middleware/auth.ts
?将您的别名路径与我在自己的项目中使用它们的位置进行比较,我能发现的唯一区别是我没有前缀 ./
(来自 ./app/*
)。好吧,我的工作方式是根据 Jest 默认规范从 src
和 __tests__
的基础上工作。我建议您尝试删除初学者的 ./
前缀 - 我可以想象它可能错误地引用了 test/unittest/app
。
删除./
没有帮助,但移动到__test__
有帮助!非常感谢。
很高兴您设法解决了它。 **/__test__/**
模式来自default of the testMatch option。我已经编辑了我的原始答案以引用 cmets。您根本不必这样做,但如果您考虑将答案标记为已接受,我将不胜感激。以上是关于VS Code TypeScript Jest 模块映射的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio Code (VS Code) 上调试用 Typescript 编写的 Express 应用程序
Visual Studio Code 不会正确踩到 TypeScript 代码
VS Code 调试器中的 Jest + Babel 导致断点移动