如何防止(卸载)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 中同时显示打字稿警告?

如何防止标准 Windows 10 用户的卸载程序提升?

从 iPad 上的列表中卸载页面时,如何防止 mobile-safari 跳转?

WiX:如何防止注册表值在卸载时被删除?

如何从本地目录而不是全局目录运行 TypeScript