vscodeインポートインポートコンソール= require(“ console”); 自動的に


145
import console = require("console");

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

(私はそれが私の拡張機能の1つだと思います。おそらくPrettierです。)

編集:React Typescript環境でのみ発生します。反応せずにTypescriptではありません。


これで運がいい?私は同じ問題を抱えています
user2517182

回答の回避策のほかに、これは最後の更新で導入されたVSCodeのバグのようです。対応するバグレポートがここに入力されます:github.com/Microsoft/vscode/issues/70157
ofhouse

1
TS / JS毎晩プラグインは VSCode 1.36+のためにこれを修正
アンドリュー・リ

回答:


126

免責事項:これは「解決策」と考えるべきではありませんが、それは最も単純/最速です。

この答えは、VSCodeを使用していることを前提としています。他のIDEも同様です。

  1. 入力を開始 console
  2. Enterをクリックするか入力して.IntelliSenseが追加できるようにしますimport console = require("console");
  3. Ctrl +クリック(またはF12、またはmacOSではCmd +クリック) require("console")
  4. このコードをコメント化します。
declare module "console" {
    export = console;
}

9
これがRedditだったら、これに金を差し上げます。ありがとう:)
FearMediocrity

5
うまく動作します。Cmd +クリックする必要があります"console"が、それは詳細です。ありがとう!
Loolooii

F12またはCmd +クリックで問題が発生した場合は、「コンソール」を右クリックしてから「定義に移動」も機能します(少なくともosxでは)
imekinox

2
これは、node_modules dir内のファイルを編集しています。つまり、npmインストールを再度実行すると、「修正」がリセットされます。私はそれが迅速な修正であると
理解してい

宣言ファイルを変更したくないすべての人にとって、TS / JSナイトリープラグインは、VSCode 1.36以降でこれを修正します
Andrew Li

31

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

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

JavaScriptを使用する場合

"javascript.suggest.autoImports":false

Typescriptを使用する場合

"typescript.suggest.autoImports":false

ここに画像の説明を入力してください

編集:依存関係ツリーの下のパッケージ内のこのコードが原因で、誤った自動インポートが発生します

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-> rimraf-> nodeからの参照がありました。反応ネイティブ副操縦士を削除すると、問題が解決しました。


8
ええ、それはもう他の自動インポート作業を引き起こしません。私はこの機能が好きで、これを回答として受け入れません...:-D(ありがとうございます!)別の解決策があるはずです。私もまだ探しています。
dragonsoul

create-react-app my-app --scripts-version = react-scripts-tsを使用して新しいプロジェクトを作成する場合は、それが発生しないことがわかったため、何らかの方法でワークスペース設定に接続する必要があります。
dragonsoul

私はもう少し調査しました、編集された答えを見てください、あなたがあなたのプロジェクトでそれを見つけてくれることを願っています!
KvD 2018年

1
はいそれは確かにうまくいきました。私は考えています、これはVSCodeバグですか、それともこれらのパッケージの作成者によるものですか?私にとっては、@ types / nodeと@ types / react-domにありました。ありがとうございます:-)
dragonsoul

4
~/Library/Caches/フォルダ内の "typescript/3.2/node_modules/@types/node/index.d.ts"内に欠陥のあるコードが見つかりました。Macを使用しています。それは私のキャッシュワークスペースにあるので、実際のコードを削除しました: `` `lang-js declare module" console "{export = console; } `` `そしてそれはうまくいった!
jcperez-ch

17

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

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

これは自動インポートを防ぎます。

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


これは、チェックインできる洗練されたソリューションであり、複数のワークスペースやデバイスで機能します。ありがとう!
phsource

4
「エクスポート割り当ての式は、アンビエントコンテキストの識別子または修飾名である必要があります。ts(2714)」と表示されるのはなぜですか?tsconfig.jsonの設定に関連している可能性がありますか?
Mehmet N. Yarar

はい、できます...ここで私の設定を確認できます:github.com/codechecks/monorepo/blob/master/tsconfig.jsonこれはconsole.d.tsファイルで動作します
Krzysztof Kaczor

17

挿入するスニペットを追加してconsole.logそれを使用する場合、「コンソール」の自動インポートはありません。

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

これが私のスニペットです:

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

5
解決策ではありませんが、それは巧妙であり、ほとんどの投票された回答で述べられているように、問題の原因となっているパッケージを削除できない場合に機能します。
tibuurcio

@tibuurcioに同意します。賢い回避策ですが、これを解決策として受け入れることはできません...
dragonsoul

うまくいきませんでした。コンソールに書き込んでから ""を押しても、自動インポートされます。自動輸入
Mr.Ghamkhar

1
@ mr-ghamkhar上記のスニペットを使用する場合は、「cl」または「prefix」に入力したものを記述するだけです。自動インポートの動作を回避するには、「コンソール」以外のものである必要があります。
ジョルジオ

9

私が「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"
    }   
}

1
本当の答えは怠惰です:)
FOLOF

内部パッケージを編集する必要がないため、これは私にとって最良のソリューションです
Harrison

5

これが起こらないようにする1つの方法は、tsconfig.jsonファイルを変更して、プロジェクトに自動的にインポートされるタイプのセットを制限することです。

私はこれと同じ問題を抱えていて、次のように追加して修正しました:

types: []

私のtsconfig.jsonファイルに。これにより、TypeScript(およびVSCodeの拡張機能)@types/がプロジェクト構成に含まれているすべてのノードパッケージを自動的にインポートすることができなくなります。これらのタイプを使用してパッケージを明示的にインポートする場合、TSがこれらのタイプ定義をインポートすることを妨げません。

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

プロジェクトによっては、基本タイプパッケージのセットをtypesパラメータに明示的に追加する必要がある場合があります(以下同様types: ["dom", "react"])。しかし、私の場合、これは不要であることが判明し、私のプロジェクトは空のリストで問題なくコンパイルできました。また、VSCodeが「コンソール」を自動的にインポートする傾向は完全になくなったようです。これまで他の悪影響に気づきませんでした。

tsconfig.jsonでのタイプ設定の詳細については、https://www.typescriptlang.org/docs/handbook/tsconfig-json.htmlをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.