[英]vscode imports import console = require(“console”); automatically
import console = require("console");
console.
“我打字。 以上是在VScode中自動導入的。 有誰知道如何禁用它?
(我認為這是我的擴展之一。可能比較漂亮。)
編輯:它只發生在React Typescript環境中。 沒有反應就沒有打字稿。
免責聲明:這不應被視為“解決方案”,但它是最簡單/最快的。
這個答案假設你正在使用VSCode。 其他IDE應該類似。
console
.
,允許IntelliSense添加import console = require("console");
require("console")
上按Ctrl +單擊(或F12,或Cmd +單擊macOS require("console")
declare module "console" {
export = console;
}
我也經歷過這種情況,這似乎是VSCode中自動導入功能的一個問題。 禁用所有擴展似乎也沒有讓它消失。
作為解決方法,您可以在設置中禁用自動導入。
如果你使用Javascript
“javascript.suggest.autoImports”:false
如果你使用Typescript
“typescript.suggest.autoImports”:false
編輯:錯誤的自動導入發生是因為依賴關系樹中的包中的此代碼
declare module "console" {
export = console;
}
該程序包可以位於本地node_modules目錄中,也可以位於全局安裝的引用程序包中。
declare module "console"
npm list [packageName]
以確定package.json中的哪個包依賴於包含控制台代碼的包。 如果您在本地node_modules中找不到代碼,則可以
在package.json中逐個刪除軟件包
在全局安裝的模塊中搜索可能由項目中的包引用的控制台代碼
%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.