为啥 vscode 从打字稿缓存中导入包

Posted

技术标签:

【中文标题】为啥 vscode 从打字稿缓存中导入包【英文标题】:Why vscode is importing packages from typescript cache为什么 vscode 从打字稿缓存中导入包 【发布时间】:2018-07-06 22:24:15 【问题描述】:

我已经启动了一个使用 cli 生成的 react-native 项目。该应用程序似乎运行良好,但我注意到导入指向打字稿缓存而不是本地 node_modules。我什至没有使用打字稿。

IDE:vscode 1.19.3

import React,  Component  from 'react';

模块 "/Users/MyMac/Library/Caches/typescript/2.6/node_modules/@types/react/index"

【问题讨论】:

@types 是 typescript 定义包的集合,而不是实际的库本身。所以在你的情况下,它只是从这个目录加载 React 的类型定义。我猜 vscode 这样做是为了提供智能感知,即使你不使用 TypeScript。 唯一的问题是它每次都会破坏我的应用程序......(react-native)......相对路径不起作用 【参考方案1】:

这是 javascript 所期望的。这些@types 文件为诸如react 之类的npm 模块提供VS Code IntelliSense。 react 模块本身仍将从您本地的 node_modules 导入

有关更多详细信息,请参阅我们在 Automatic type acquisition 上的文档

【讨论】:

这不是可能的误导吗?例如,如果恰好安装在 .../Caches/typescript/4.0/node_modules/@types/ 目录中,VS Code 不会显示未安装在模块中本地的包的导入错误?

以上是关于为啥 vscode 从打字稿缓存中导入包的主要内容,如果未能解决你的问题,请参考以下文章

要求语句不是导入语句的一部分。eslint@typescript-eslint/no-var-需要从存储中导入打字稿

如何从打字稿文件中导出 React 组件

无法在 VSCode Java 项目中导入包

打字稿导入模块作为变量不起作用

在打字稿中导入 javascript 库时出错

无法在打字稿中导入 svg 文件