IntelliJ IDEA - 如何解析 NPM monorepo 中正确的全局 TypeScript 类型?

问题描述 投票:0回答:1

我有一个使用 Vitest 的 NPM 工作区包,我的

tsconfig.vitest.json
看起来像这样:

{
  "$schema": "https://json.schemastore.org/tsconfig.json",
  "extends": "./tsconfig.app.json",
  "include": ["vite.config.ts", "vitest.config.mts", "tests/**/*.ts", "tests/**/*.js"],
  "exclude": [],
  "compilerOptions": {
    "composite": true,
    "outDir": "../../dist/out-tsc",
    "lib": [],
    "types": ["vitest/globals", "vitest/importMeta", "vite/client", "node"]
  }
}

在该包中,我没有安装 Cypress 或 Jest,但我在邻居包中安装了 Cypress,而 Jest 是全局对等依赖项之一。我不想手动

import { vi, expect, test, describe } from 'vitest'
- 这就是
"types": ["vitest/globals"]
的用途。但是为什么 IntelliJ 不能解析正确的类型,特别是本地只安装了 Vitest,我该怎么办?

我使用的是 typescript >= 5.0,因此 IntelliJ 使用 Vue Language Server (Volar) 进行编译,但我认为这仅与 .vue 文件相关,而不与 .spec.ts 相关?

typescript intellij-idea webstorm monorepo vitest
1个回答
0
投票

据我所知,您的项目具有三个依赖项,它们的模块名称相似。在这种情况下,IDE 无法解析将要使用的依赖项。恐怕除了显式导入所需的模块之外没有其他方法。
作为解决方法,您可以尝试从索引中排除包含同名方法的 .ts 文件。例如,使用上下文菜单中的“覆盖文件类型”项(您可以将这些文件标记为纯文本)。如果您在使用此解决方法时遇到困难,请随时分享一个展示您的进展的示例。我会研究并跟进你。

© www.soinside.com 2019 - 2024. All rights reserved.