Typescript vscode导入导入控制台=需要(“控制台”);自动地

Typescript vscode导入导入控制台=需要(“控制台”);自动地,typescript,visual-studio-code,Typescript,Visual Studio Code,控制台。我也遇到过这种情况,这似乎是VSCode中自动导入功能的问题。禁用所有扩展似乎也不会让它消失 作为一种解决方法,您可以在“设置”中禁用自动导入 如果使用Javascript “javascript.suggest.autoImports”:false 如果使用Typescript “typescript.suggest.autoImports”:false 编辑:发生错误的自动导入是因为依赖关系树下的包中存在此代码 import console = require("console")

控制台。
我也遇到过这种情况,这似乎是VSCode中自动导入功能的问题。禁用所有扩展似乎也不会让它消失

作为一种解决方法,您可以在“设置”中禁用自动导入

如果使用Javascript

“javascript.suggest.autoImports”:false

如果使用Typescript

“typescript.suggest.autoImports”:false

编辑:发生错误的自动导入是因为依赖关系树下的包中存在此代码

import console = require("console");
包可以位于本地节点\模块目录中,也可以位于全局安装的引用包中

  • 在本地节点模块中搜索
    声明模块“控制台”
  • 如果在本地包中找到它,请运行
    npm list[packageName]
    以确定package.json中的哪个包依赖于包含控制台代码的包
  • 如果在本地节点单元模块中找不到代码,您可以

  • 在package.json中逐个删除包

  • 在全局安装的模块中搜索控制台代码,这些模块可能会被项目中的包引用

  • %USERPROFILE%\AppData\Roaming\npm\node\u模块 %USERPROFILE%\AppData\Local\Microsoft\TypeScript


    我知道这不是一个直截了当的解决方案,但我希望它能有所帮助,在我的例子中,我有一个来自react native copilot->rimraf->node的参考,其中包含控制台代码。删除react native copilot解决了问题。

    如果添加插入
    console.log的代码段并使用该代码段,则不会自动导入“console”

    以下是我的片段:

    {
    “打印到控制台”:{
    “前缀”:“cl”,
    “正文”:[
    “console.log('$1');”,
    ],
    “说明”:“日志输出到控制台”
    }
    }
    
    免责声明:这不应被视为“解决方案”,但它是最简单/最快的

    这个答案假设您使用的是VSCode。其他IDE应该是类似的

  • 开始键入控制台
  • 单击enter或键入
    ,允许添加
    导入控制台=要求(“控制台”)
  • require(“控制台”)
  • 注释此代码:
  • 如果您像我一样忘记了“cl”,可以在代码段中使用多个前缀:)


    防止这种情况发生的一种方法是修改tsconfig.json文件,以限制自动导入项目的类型集

    我也有同样的问题,我通过添加以下内容来解决:

    类型:[]

    输入我的tsconfig.json文件。这样做的目的是禁用的TypeScript(扩展名为VSCode),使其无法自动将具有
    @types/
    的所有节点包导入到项目配置中。如果显式导入使用这些类型的包,这不会阻止TS导入这些类型定义

    在我的具体案例中,
    控制台
    定义来自
    @types/node
    ,它作为Storybook的依赖项导入到项目中。然而,我的项目是一个网页包项目,打算在浏览器中运行,所以将Node.js类型导入到我的源代码中没有意义。要在浏览器中使用的基本类型集是dom类型,而不是节点类型

    根据您的项目,您可能必须显式地将基本类型包集添加到types参数中(
    types:[“dom”、“react”]
    等等)。然而,在我的例子中,这被证明是不必要的,我的项目能够在一个空列表中编译。VSCode自动导入“控制台”的趋势似乎已经完全消失;到目前为止,我还没有注意到任何其他的不良影响


    有关在tsconfig.json中设置类型的更多信息,请参见此处:

    我发现的最优雅的解决方案是在项目中的某个位置创建虚拟
    console.d.ts
    文件:

    声明模块“控制台”{
    导出=导入类型(“控制台”);
    }
    
    这将阻止自动导入


    信用证:

    这方面运气好吗?我也有同样的问题在答案中除了解决办法之外,这似乎是上次更新时引入的VSCode中的一个bug。这里填写了相应的错误报告:修复了VSCode 1.36+yeah的错误,这也不再导致其他自动导入工作。我喜欢这个功能,不接受这个答案…:-D(谢谢!)肯定还有其他解决方案。我仍然在寻找。我发现,当您使用create react app my app--scripts version=react scripts ts创建新项目时,不会发生这种情况,因此它必须以某种方式连接到工作区设置。我做了一些进一步的研究,查看编辑过的答案,希望您在项目中找到它!是的,那确实有效。我在想,这是一个VSCode错误还是来自这些包的创建者?对我来说,它在@types/node和@types/react-dom中。谢谢:-)在
    ~/Library/Caches/
    文件夹中的“typescript/3.2/node_modules/@types/node/index.d.ts”中找到了错误代码。我在mac电脑上。因为它在我的缓存工作区中,所以我刚刚删除了实际的代码:``lang js declare module“console”{export=console;}````,它成功了!虽然这不是一个解决方案,但它很聪明,当您无法删除导致问题的包时,它就会起作用,正如大多数投票答案中所述。我同意@tibuurcio。聪明的解决办法,但我不能接受这是一个解决方案…没有工作。在我写控制台之后,它仍然会自动导入,然后我按“.”它会自动导入imports@mr-ghamkhar如果你想使用上面的代码片段,你只需要写“cl”或任何你在“prefix”中写的东西。要避免自动导入行为,需要使用“控制台”以外的工具。真正的答案是懒惰:)这是我的最佳解决方案,因为您不需要
    declare module "console" {
        export = console;
    }
    
    declare module "console" {
        export = console;
    }
    
    {
        "Print to console": {
            "prefix": ["cl","co","con","cons","conso","consol","console", "console.l","console.lo","console.log"],
            "body": [
                "console.log($1);",
            ],
            "description": "Log output to console"
        }   
    }