【问题标题】: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"
  ]
}

【问题讨论】:

    标签: reactjs typescript npm types node-modules


    【解决方案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:

    1. 转到选项-> 文本编辑器-> JavaScript/TypeScript-> 项目并取消选中 JavaScript 的 TypeAcquisition

    2. 关闭 VisualStudio

    3. 删除C:\Users\下的文件夹[用户名]\AppData\Local\Microsoft\TypeScript\ [VersionOfConcern]

    4. 重新加载解决方案,您的错误应该消失了

    VS Code 用户请参考 tsconfig.json 文件选项:

    {
    [...],
    "typeAcquisition": {"enable": false}
    }
    

    我没有测试 VS Code 的解决方案。

    【讨论】:

      猜你喜欢
      • 2015-01-21
      • 2016-01-14
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多