gpt4 book ai didi

typescript - VSC 在 monorepo 中找不到包(找不到名称 [package])

转载 作者:行者123 更新时间:2023-12-05 06:21:12 27 4
gpt4 key购买 nike

我已经在 typescript 中设置了一个 monorepo。我面临的问题是找不到我的测试框架(在切换到 monorepo 之前可以找到哪个 visual studio 代码)。

我收到以下错误:找不到名称“jest”或“describe”...等。我认为 visual studio code 找不到 jest npm 包。当我打开 de/cli、/server、/shared 文件夹时,VSC 只会检测到该包。

这是我的文件夹结构:

/cli
node_modules
src
tsconfig.json
/server
node_modules
src
tsconfig.json
/shared
node_modules
src
tsconfig.json
tsconfig.base.json
tsconfig.json

我的 tsconfig.base.json:

{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": [
"es2015"
],
"strict": true,
"declaration": true,
"outDir": "dist",
"sourceMap": true,
"paths": {
"@shared/*": [
"./shared/src/*"
]
}
},
"files": [],
"references": [
{
"path": "./server"
},
{
"path": "./cli"
},
{
"path": "./shared"
}
]
}

我的客户端 tsconfig.json:

{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"baseUrl": "..",
"outDir": "dist",
"types": [
"jest"
],
"typeRoots": [
"./node_modules/@types"
]
},
"include": [
"src/**/*",
"../shared/src/**/*"
],
"exclude": [
"node_modules",
"**/*.test.ts"
]
}

发生错误的一个小例子:

import { getUserInput } from "./console";
import { createInterface, ReadLineOptions } from "readline"; <----- error readline not found
jest.mock("readline"); <----- error jest not found

我希望你能帮我设置一下。

编辑:我发现当我从排除中删除 "**/*.test.ts" 时,它会像预期的那样再次工作。但是在编译时,我不希望包含测试......

最佳答案

你想试试这个。

  1. 使用 tsconfig.json 的当前设置创建一个 tsconfig.build.json,不包括您的测试文件:
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
// your specific compiler options for this module
},
"exclude": [
"node_modules",
"**/*.test.ts"
]
}
  1. 使用新的 tsconfig.build.json 扩展 tsconfig.json,并删除测试排除项:
{
"extends": "./tsconfig.build.json",
"exclude": [
"node_modules",
]
}
  1. package.json 中调整您的构建命令:
{
"name": "server",
"scripts": {
"build": "tsc -b tsconfig.build.json"
}
}

您之前的配置无法解析和类型检查 Jest 成员,因为您明确指示 typescript 忽略您的测试文件。

我在查看其他 monorepos 时为自己找到了这个答案,例如 typescript-eslint/eslint-plugin-internal做同样的事情。

关于typescript - VSC 在 monorepo 中找不到包(找不到名称 [package]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59993227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com