【问题标题】:How to get intellisense in VSCode from node_modules in unusual place?如何在不寻常的地方从 node_modules 获取 VSCode 中的智能感知?
【发布时间】:2021-09-01 19:56:45
【问题描述】:

如何让 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 不是相对的)。

我怎样才能做到这一点?

【问题讨论】:

  • 节点模块解析找不到这个node_modules文件夹,所以这个错误是非常正确的。你确定你真的可以使用some-module吗?你调整过模块解析算法吗?
  • @DimaParzhitsky 是的,因为构建步骤会将所有这些文件复制到与完整工作项目匹配的新文件夹结构中。

标签: node.js typescript node-modules tsconfig


【解决方案1】:

尝试使用typeRoots编译器选项:

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

注意,typeRoots 的默认值被替换,而不是扩展。详情请见this issue

【讨论】:

    猜你喜欢
    • 2022-10-18
    • 2020-10-02
    • 2018-05-31
    • 2016-08-22
    • 1970-01-01
    • 2019-11-11
    • 2016-11-23
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多