网站搜索

node.js - 如何在 VSCode 中从不寻常位置的 node_modules 获取智能提示?


我如何让 VSCode 找到安装在不同位置的模块的类型声明?

/
└── Users
    └── me
        ├── foo
        |   └── node_modules
        |       └── some-module
        ├── bar
        |   └── file.ts
        └── tsconfig.json
// bar/file.ts
import {} from 'some-module'
            // ^^^^^^^^^^^^^ Cannot find module 'some-module' or its corresponding type declarations.ts(2307)

我尝试了 tsconfig.json 中的 paths 选项,但它不起作用,因为它试图在 foo/node_modules 中找到一个名为 some-module.ts 的文件(似乎在这种情况下它不知道如何解析 package.json 文件)

我尝试了 tsconfig.json 中的 rootDirs 选项,但它被忽略了,因为显然它只用于尝试解析相对导入(而 some-module 并不是相对导入)。

我如何才能实现这个?

答案#1

尝试使用 typeRoots 编译器选项:

// /Users/me/tsconfig.json
{
  "compilerOptions": {
    "typeRoots": [
      "./foo/node_modules",
      // maybe other locations
    ],
  },
}

请注意,typeRoots 的默认值是被替换,而不是扩展。详情请参见此问题。