vscode import import console = require ("console"); автоматически
import console = require("console");
console.
<< Я печатаю. и выше импортируется автоматически в VScode. Кто-нибудь знает, как это отключить?
(Я предполагаю, что это одно из моих расширений. Возможно, красивее.)
редактировать: это происходит только в среде React Typescript. не в Typescript без реакции.
Ответы
Ответ 1
Отказ от ответственности: это не должно рассматриваться как "решение", но это самое простое/быстрое.
Этот ответ предполагает, что вы используете VSCode. Другие IDE должны быть похожими.
- Начните вводить
console
- Нажмите ввод или введите
.
, позволяя IntelliSense добавить import console = require("console");
- Ctrl + клик (или F12, или Cmd + клик на macOS) по
require("console")
- Закомментируйте этот код:
declare module "console" {
export = console;
}
Ответ 2
Я также испытал это, и, похоже, проблема с функцией автоматического импорта в VSCode. Отключение всех расширений, похоже, тоже не уходит.
В качестве обходного пути вы можете отключить автоимпорт в настройках.
Если вы используете Javascript
"javascript.suggest.autoImports": false
Если вы используете Typescript
"typescript.suggest.autoImports": false
РЕДАКТИРОВАТЬ: сбой автоимпорта происходит из-за этого кода в пакете вниз по дереву зависимостей
declare module "console" {
export = console;
}
Пакет может быть расположен либо в вашем локальном каталоге node_modules, либо в глобальном пакете, на который есть ссылка.
- Поиск в вашем локальном 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
Я знаю, что это не прямое решение, но я надеюсь, что оно поможет, в моем случае у меня была ссылка от узлаact-native-copilot → rimraf ->, в которой был консольный код. Удаление реакции-родного-второго пилота решило проблему.
Ответ 3
Если вы добавите фрагмент для вставки 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"
}
}
Ответ 4
Если я вам нравлюсь, забывает "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
Один из способов предотвратить это - изменить файл tsconfig.json, чтобы ограничить набор типов, которые автоматически импортируются в ваш проект.
У меня была такая же проблема, и я исправил ее, добавив:
types: []
в мой файл tsconfig.json. Это отключает TypeScript (и расширение VSCode) от автоматического импорта всех пакетов узлов, которые имеют @types/
в конфигурацию проекта. Это не мешает TS импортировать эти определения типов, если вы явно импортируете пакет, используя эти типы.
В моем конкретном случае определение console
исходило от @types/node
, которая была импортирована в проект как зависимость от Storybook. Тем не менее, мой проект был проектом webpack, предназначенным для запуска в браузере, поэтому импорт типов Node.js в мой исходный код не имел смысла. Базовый набор типов, которые вы хотели бы использовать в браузере, - это типы dom, а не типы узлов.
В зависимости от вашего проекта вам может понадобиться явно добавить набор пакетов базового типа в параметр types: ["dom", "react"]
(types: ["dom", "react"]
и т.д.). Тем не менее, в моем случае это оказалось ненужным, мой проект смог прекрасно скомпилироваться с пустым списком. И тенденция VSCode автоматически импортировать "консоль", похоже, полностью исчезла; Я не заметил никаких других побочных эффектов.
Более подробная информация о настройке типов в tsconfig.json здесь: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html.
Ответ 6
Начиная с версии VS Code 1.33, добавьте следующее в файл settings.json для редактора.
"editor.suggest.filteredTypes": {
"console": false
},
Ответ 7
Самое элегантное решение, которое я нашел, - создать фиктивный файл console.d.ts
где-нибудь в вашем проекте:
declare module 'console' {
export = typeof import("console");
}
Это предотвратит автоматический импорт.
Кредиты: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436