Wes*_*den 4 typescript jestjs yarnpkg yarn-workspaces
我正在尝试将 Typescript 项目重构为具有多个包(带有纱线工作区)的 monorepo。在其中一个包 ( packages/compiler) 中,我安装了 jest,并进行了几次测试。他们以前工作过,但重构后我收到以下错误消息:
找不到名称“它”。您是否需要安装类型定义?
测试跑者?尝试
npm i @types/jest或npm i @types/mocha
我似乎无法弄清楚如何让开玩笑起作用。
我开玩笑地在所有测试的包中安装了“本地”。但是如果我node_modules/在 a 之后检查yarn install,我只能看到一个.bin目录packages/compiler/node_modules,并且我可以看到 (ts-)jest 安装在“root”中node_modules。我认为我需要确保 jest 安装在我的包 ( packages/compiler/node_modules)的 node_modules 中,而不是安装在根目录中。但我似乎无法弄清楚如何做到这一点(nohoist根 package.json 中的选项不起作用)。
所以我的问题是如何让 jest 在我的子包中工作?
根package.json:
{
"name": "pannenkoekjs",
"private": true,
"workspaces": [
"packages/*"
],
"devDependencies": {
"lerna": "^3.18.4"
}
}
Run Code Online (Sandbox Code Playgroud)
该package.json在packages/compiler:
{
"name": "@pannenkoekjs/compiler",
"dependencies": {
"typescript": "^3.6.2"
},
"devDependencies": {
"@types/jest": "^24.0.23",
"jest": "^24.9.0",
"ts-jest": "^24.1.0",
}
}
Run Code Online (Sandbox Code Playgroud)
而jest.config.js在packages/compiler:
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
};
Run Code Online (Sandbox Code Playgroud)
显然错误不是关于它没有找到笑话,而是类型定义。我已经@types/jest安装了,但它安装在 de “root” node_modules 中。在我的tsconfig.jsoninpackages/compiler我有以下内容:
"typeRoots": [
"./node_modules/@types",
"./src/@types",
]
Run Code Online (Sandbox Code Playgroud)
换句话说; 它正在该包的本地 node_modules 中寻找类型定义(so packages/compiler/node_modules),而 jest 的类型定义安装在根目录中。因此,将其添加到 typeRoots 解决了我的问题:
"typeRoots": [
"./node_modules/@types",
"../../node_modules/@types",
"./src/@types",
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |