如何防止(卸载)TypeScript 安装并将其自己的 @types 引用到 AppData\Local
Posted
技术标签:
【中文标题】如何防止(卸载)TypeScript 安装并将其自己的 @types 引用到 AppData\\Local【英文标题】:How do I prevent (uninstall) TypeScript installing and referencing it's own @types into AppData\Local如何防止(卸载)TypeScript 安装并将其自己的 @types 引用到 AppData\Local 【发布时间】:2019-04-16 10:32:22 【问题描述】:我遇到了一个令人困惑的问题,似乎TypeScript
正在将自己的React
副本安装到它自己的全局缓存中(不确定它叫什么?假设它是什么)并引用它在我的项目中。
具体来说,我最终得到了两个对 React 的引用,其中一个位于我的项目的根目录中
C:\MyProject\node_modules\@types\react
然后在
中的另一个引用C:\Users\MyUserName\AppData\Local\Microsoft\TypeScript\3.0\node_modules\@types\react
如何控制和卸载 TypeScript local
文件夹中的引用?我在项目中做了哪些可能会导致此次要引用的操作?
这是我的 tsconfig.json 文件的样子:
"compilerOptions":
"module": "commonjs",
"moduleResolution": "node",
"target": "es5",
"sourceMap": true,
"jsx": "react",
"lib": [ "es6", "dom" ],
"removeComments": true,
"typeRoots": [
"/Types/"
]
,
"compileOnSave": false,
"exclude": [
"/node_modules/",
"/bin",
"/obj"
]
【问题讨论】:
【参考方案1】:将类型声明下载到C:\Users\MyUserName\AppData\Local\Microsoft\TypeScript\3.0\node_modules
的功能称为"Automatic Type Acquisition",适用于javascript 项目。由于您的项目有一个tsconfig.json
文件,因此自动类型获取应该处于非活动状态,并且不应使用任何以前下载的文件;如果您有证据表明它们正在被使用并导致您的项目出现问题,请更新问题。假设您使用的是 Visual Studio Code,您可以通过将 typescript.disableAutomaticTypeAcquisition
设置为 true
来禁用自动类型获取。
【讨论】:
非常感谢您的回复并指导我朝着正确的方向前进,但是不,我正在使用 Visual Studio Enterprise 2017。您是否知道如何在这种情况下禁用它? 在快速网络搜索中,我无法在 Visual Studio 中找到禁用自动类型获取的全局开关,但the documentation 确认应该为带有tsconfig.json
的项目禁用它。我的问题是:下载的文件真的会导致您的项目出现问题吗?
抱歉,是的,我收到了超过 190 个编译器重复声明错误,直到我删除了有问题的重复文件夹。我想我可能已经找到了这个选项,现在测试它...github.com/Microsoft/TypeScript/issues/19369
感谢您的回答。 VSCode 设置的另一种方式可能会导致团队成员之间的行为不一致。我希望 VSCode 会提示安装并将类型正确安装到 devDependencies!【参考方案2】:
这些问题的出现取决于您的 IDE,并以不同的方式解决
对于 Visual Studio 2019:
转到选项-> 文本编辑器-> JavaScript/TypeScript-> 项目并取消选中 JavaScript 的 TypeAcquisition
关闭 VisualStudio
删除C:\Users\下的文件夹[用户名]\AppData\Local\Microsoft\TypeScript\ [VersionOfConcern]
重新加载解决方案,您的错误应该消失了
VS Code 用户请参考 tsconfig.json 文件选项:
[...],
"typeAcquisition": "enable": false
我没有测试 VS Code 的解决方案。
【讨论】:
以上是关于如何防止(卸载)TypeScript 安装并将其自己的 @types 引用到 AppData\Local的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Vetur 和 TypeScript 在 VSCode 中同时显示打字稿警告?