vscode import import console = require ("console");автоматически - PullRequest
0 голосов
/ 13 ноября 2018
import console = require("console");

console. << Я печатаю. и выше импортируется автоматически в VScode. Кто-нибудь знает, как это отключить? </p>

(Полагаю, это одно из моих расширений. Возможно, красивее.)

редактирование: это происходит только в среде React Typescript. не в Typescript без реакции.

Ответы [ 6 ]

0 голосов
/ 18 мая 2019

Самое элегантное решение, которое я нашел, - создать фиктивный файл console.d.ts где-нибудь в вашем проекте:

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

Это предотвратит автоматический импорт.

Кредиты: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436

0 голосов
/ 30 марта 2019

Один из способов предотвратить это - изменить файл tsconfig.json, чтобы ограничить набор типов, которые автоматически импортируются в ваш проект.

У меня была такая же проблема, и я исправил ее, добавив:

types: []

в мой файл tsconfig.json. Это отключает TypeScript (и с расширением VSCode) от автоматического импорта всех пакетов узлов с @types/ в конфигурацию проекта. Это не мешает TS импортировать определения этих типов, если вы явно импортируете пакет, используя эти типы.

В моем конкретном случае определение console было взято из @types/node, которое было импортировано в проект как зависимость от Storybook. Тем не менее, мой проект был проектом webpack, предназначенным для запуска в браузере, поэтому импорт типов Node.js в мой исходный код не имел смысла. Базовый набор типов, которые вы хотели бы использовать в браузере, - это типы dom, а не типы узлов.

В зависимости от вашего проекта вам может понадобиться явно добавить набор пакетов базового типа в параметр типов (types: ["dom", "react"] и т. Д.). Тем не менее, в моем случае это оказалось ненужным, мой проект смог прекрасно скомпилироваться с пустым списком. И тенденция VSCode автоматически импортировать «консоль», похоже, полностью исчезла; Я не заметил никаких других побочных эффектов.

Дополнительная информация о типах настроек в tsconfig.json здесь: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

0 голосов
/ 07 марта 2019

Если вы мне нравитесь, то забываете «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"
    }   
}
0 голосов
/ 28 февраля 2019

Отказ от ответственности: это не следует рассматривать как «решение», но оно самое простое / быстрое.

В этом ответе предполагается, что вы используете VSCode.Другие IDE должны быть похожими.

  1. Начните вводить console
  2. Нажмите ввод или введите ., позволяя IntelliSense добавить import console = require("console");
  3. Ctrl + клик (или F12, или Cmd + клик на macOS) на require("console")
  4. Закомментируйте этот код:
declare module "console" {
    export = console;
}
0 голосов
/ 18 января 2019

Если вы добавите фрагмент для вставки 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"
    }
}
0 голосов
/ 21 ноября 2018

Я также испытал это, и, похоже, проблема с функцией автоматического импорта в 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], чтобы определить, какой пакет в пакете.json зависит от пакета с консольным кодом в нем.

Если вы не можете найти код в своих локальных node_modules, вы можете либо

  1. Устранитьпакеты один за другим в package.json

  2. Поиск кода консоли в глобально установленных модулях, на которые могут ссылаться пакеты в вашем проекте

% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules% USERPROFILE% \ AppData \Локальный \ Microsoft \ TypeScript

Я знаю, что это не прямое решение, но я надеюсь, что это поможет, в моем случае у меня была ссылка с узлаact-native-copilot -> rimraf ->, на котором была консолькод в нем.Удаление реакции-родного-второго пилота решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...