簡體   English   中英

vscode import import console = require(“console”);自動

[英]vscode imports import console = require(“console”); automatically

import console = require("console");

console. “我打字。 以上是在VScode中自動導入的。 有誰知道如何禁用它?

(我認為這是我的擴展之一。可能比較漂亮。)

編輯:它只發生在React Typescript環境中。 沒有反應就沒有打字稿。

免責聲明:這不應被視為“解決方案”,但它是最簡單/最快的。

這個答案假設你正在使用VSCode。 其他IDE應該類似。

  1. 開始輸入console
  2. 單擊輸入或鍵入. ,允許IntelliSense添加import console = require("console");
  3. require("console")上按Ctrl +單擊(或F12,或Cmd +單擊macOS require("console")
  4. 注釋掉這段代碼:
declare module "console" {
    export = console;
}

我也經歷過這種情況,這似乎是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中逐個刪除軟件包

  2. 在全局安裝的模塊中搜索可能由項目中的包引用的控制台代碼

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

我知道這不是一個直接的解決方案,但我希望它有所幫助,在我的情況下,我有一個來自react-native-copilot的參考 - > rimraf - >節點,其中包含控制台代碼。 刪除react-native-copilot解決了這個問題。

如果您添加一個用於插入console.log的代碼段並使用它,則不會自動導入“console”

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

我發現最優雅的解決方案是在項目的某處創建虛擬console.d.ts文件:

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

這將阻止自動導入。

致謝: https//github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436

如果你喜歡我忘了“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"
    }   
}

防止這種情況發生的一種方法是修改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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM