web-dev-qa-db-ja.com

vscode imports import console = require( "console");自動的に

import console = require("console");

console. <<入力します。そして上記はVScodeに自動的にインポートされます。誰もがそれを無効にする方法を知っていますか?

(私はそれが私の拡張の1つであると思います。おそらくよりきれいです)

編集:それはReact TypeScript環境でのみ発生します。 TypeScriptでは反応しません。

83
dragonsoul

免責事項:これは「解決策」と見なされるべきではありませんが、それは最も簡単で速いです。

この答えはあなたがVSCodeを使っていると仮定しています。他のIDEも似ているはずです。

  1. consoleと入力し始めます
  2. Enterキーを押すか.と入力し、 IntelliSenseimport console = require("console");を追加します。
  3. require("console")上でCtrlキーを押しながらクリック(またはF12キー、またはmacOSではCmdキーを押しながらクリック)します。
  4. このコードをコメントアウトしてください:
declare module "console" {
    export = console;
}
53
ZenVentzi

私もこれを経験しました、そしてそれはVSCodeの自動インポート機能に問題があるようです。すべての拡張機能を無効にしても、それが解決されるわけではありません。

回避策として、設定で自動インポートを無効にすることができます。

Javascriptを使用している場合

"javascript.suggest.autoImports":false

TypeScriptを使用している場合

"TypeScript.suggest.autoImports":false

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でパッケージを1つずつ削除する

  2. プロジェクト内のパッケージによって参照される可能性がある、グローバルにインストールされたモジュール内のコンソールコードを検索します。

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

私はそれが直接的な解決策ではないことを知っていますが、それが助けになることを願っています。 react-native-copilotを削除することで問題は解決しました。

27
KvD

console.logを挿入するためのスニペットを追加して代わりにそれを使用する場合、 "console"の自動インポートはありません。

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"
    }
}
11
Giorgio

あなたが私のような "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"
    }   
}
5
FOLOF

これを防ぐ1つの方法は、tsconfig.jsonファイルを変更して、プロジェクトに自動的にインポートされる一連のタイプを制限することです。

私はこれと同じ問題を抱えていました、そして、私はそれを加えることによってそれを直しました:

types: []

私のtsconfig.jsonファイルに。これが行うことは、@types/を持つすべてのノードパッケージを自動的にプロジェクト設定にインポートすることを無効にするTypeScript(および拡張ではVSCode)です。これらの型を使用して明示的にパッケージをインポートしても、TSがそれらの型定義をインポートするのを妨げることはありません。

私の特定のケースでは、consoleの定義はStorybookの依存関係としてプロジェクトにインポートされた@types/nodeから来ていました。しかし、私のプロジェクトはブラウザで実行することを目的としたWebPackプロジェクトなので、Node.js型を私のソースコードにインポートすることは意味がありません。ブラウザで使用する基本型のセットは、ノードタイプではなく、DOMタイプです。

プロジェクトによっては、一連の基本型パッケージをtypesパラメータに明示的に追加する必要があります(types: ["dom", "react"]など)。しかし、私の場合、これは不要であることがわかり、私のプロジェクトは空のリストを使用しても問題なくコンパイルできました。そしてVSCodeが自動的に 'console'をインポートする傾向は完全になくなったようです。私は今のところ他の悪影響に気づいていません。

Tsconfig.jsonで型を設定する方法の詳細については、 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html を参照してください。

3
Talin

私が見つけた最も洗練された解決策はあなたのプロジェクトのどこかにダミーのconsole.d.tsファイルを作成することです:

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

これは自動インポートを妨げます。

クレジット: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436

0