vscode import import console = require(“ console”);自动地

时间:2018-11-13 10:40:18

标签: typescript visual-studio-code

import console = require("console");

console. <<我输入。及以上会自动在VScode中导入。有人知道如何禁用它吗?

(我认为这是我的扩展程序之一。可能更漂亮。)

编辑: 它仅在React Typescript环境中发生。没有反应就不会出现在打字稿中。

6 个答案:

答案 0 :(得分:58)

免责声明:不应将其视为“解决方案”,但这是最简单/最快的。

此答案是假设您使用的是VSCode。其他IDE应该相似。

  1. 开始输入console
  2. 单击Enter或输入.,允许IntelliSense添加import console = require("console");
  3. require("console")上按住Ctrl键并单击(或在MacOS上按Cmd并按Cmd并单击)
  4. 注释此代码:
declare module "console" {
    export = console;
}

答案 1 :(得分:28)

我也经历了这一点,这似乎与VSCode中的“自动导入”功能有关。禁用所有扩展似乎也不会消失。

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

如果您使用Javascript

“ javascript.suggest.autoImports”:错误

如果您使用打字稿

“ typescript.suggest.autoImports”:错误

enter image description here

编辑:错误的自动导入是由于依赖树中的程序包中的此代码而发生的

declare module "console" {
    export = console;
}

该软件包可以位于您本地的node_modules目录中,也可以位于全局安装的参考软件包中。

  1. 在本地node_modules中搜索declare module "console"
  2. 如果在本地软件包中找到它,请运行npm list [packageName]以确定package.json中的哪个软件包依赖于其中包含控制台代码的软件包。

如果您在本地node_modules中找不到代码,则可以

  1. 在package.json中一一消除软件包

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

%USERPROFILE%\ AppData \ Roaming \ npm \ node_modules %USERPROFILE%\ AppData \ Local \ Microsoft \ TypeScript

我知道这不是一个简单的解决方案,但希望对我有帮助,对于我来说,我有来自react-native-copilot-> rimraf->节点的引用,其中包含控制台代码。删除react-native-copilot可以解决此问题。

答案 2 :(得分:12)

如果您添加用于插入console.log的代码段,而使用该代码段,则不会自动导入“控制台”

https://code.visualstudio.com/docs/editor/userdefinedsnippets#_creating-your-own-snippets

这是我的摘录:

{
    "Print to console": {
        "prefix": "cl",
        "body": [
            "console.log('$1');",
        ],
        "description": "Log output to console"
    }
}

答案 3 :(得分:7)

如果您喜欢我忘记了“ cl”,则可以在摘要中使用多个前缀:)

{
    "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"
    }   
}

答案 4 :(得分:3)

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

我遇到了同样的问题,并通过添加以下内容解决了该问题:

types: []

进入我的tsconfig.json文件。这样做是禁止TypeScript(以及VSCode的扩展)自动将与@types/一起使用的所有节点包导入到项目配置中。如果您使用这些类型显式导入程序包,这不会阻止TS导入这些类型定义。

在我的特定情况下,console的定义来自@types/node,它是作为Storybook的依赖项导入到项目中的。但是,我的项目是一个webpack项目,旨在在浏览器中运行,因此将Node.js类型导入我的源代码中没有任何意义。您要在浏览器中使用的基本类型集是dom类型,而不是节点类型。

根据您的项目,您可能必须将一组基本类型的软件包显式添加到types参数(types: ["dom", "react"]等)中。但是,在我看来这是不必要的,我的项目能够使用空列表进行编译。 VSCode自动导入“控制台”的趋势似乎已完全消失。到目前为止,我还没有发现其他不良反应。

有关tsconfig.json中设置类型的更多信息,请点击此处:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

答案 5 :(得分:2)

我找到的最优雅的解决方案是在项目的某个位置创建伪console.d.ts文件:

declare module 'console' {
    export = typeof import("console");
}

这将防止自动导入。

积分:https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436

相关问题