web-dev-qa-db-fra.com

importations vscode import console = require ("console"); automatiquement

import console = require("console");

console. << Je tape. et ci-dessus est importé automatiquement dans VScode. Quelqu'un sait comment désactiver ça?

(Je suppose que c'est l'une de mes extensions. Probablement plus jolie.)

edit: cela ne se produit que dans l'environnement React TypeScript. pas dans TypeScript sans réagir.

136
dragonsoul

Avertissement: ceci ne devrait pas être considéré comme "la solution" mais c'est le plus simple/le plus rapide.

Cette réponse suppose que vous utilisez VSCode. Les autres IDE devraient être similaires.

  1. Commencez à taper console
  2. Cliquez sur Entrée ou tapez ., permettant IntelliSense d'ajouter import console = require("console");
  3. Ctrl + clic (ou F12, ou Cmd + clic sur macOS) sur require("console")
  4. Commentez ce code:
declare module "console" {
    export = console;
}
121
ZenVentzi

J'ai également rencontré un problème avec la fonctionnalité d'importation automatique dans VSCode. Désactiver toutes les extensions ne semble pas le faire disparaître non plus.

Pour contourner le problème, vous pouvez désactiver les autoimports dans les paramètres.

Si vous utilisez Javascript

"javascript.suggest.autoImports": false

Si vous utilisez TypeScript

"TypeScript.suggest.autoImports": false

enter image description here

EDIT: L’autoimport défectueux se produit à cause de ce code dans un paquet dans l’arbre de dépendance

declare module "console" {
    export = console;
}

Le package peut être situé dans votre répertoire local node_modules ou dans un package référencé installé globalement.

  1. Rechercher dans votre node_modules local pour declare module "console"
  2. Si vous le trouvez dans un package local, exécutez npm list [packageName] pour déterminer le package de package.json qui dépend du package contenant le code de console.

Si vous ne trouvez pas de code dans votre node_modules local, vous pouvez soit

  1. Éliminer les paquets un par un dans package.json

  2. Recherchez le code de la console dans les modules installés globalement qui peuvent être référencés par les packages de votre projet.

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

Je sais que ce n’est pas une solution simple, mais j’espère que cela l’aidera. Dans mon cas, j’avais une référence de react-native-copilot -> rimraf -> node qui contenait le code de la console. La suppression de react-native-copilot a résolu le problème.

32
KvD

Si vous ajoutez un extrait pour insérer console.log et que vous l'utilisez à la place, il n'y aura pas d'importation automatique de "console".

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

voici mon extrait:

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

La solution la plus élégante que j'ai trouvée consiste à créer un fichier factice console.d.ts quelque part dans votre projet:

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

Cela empêchera l’importation automatique.

Crédits: https://github.com/Microsoft/TypeScript/issues/30471#issuecomment-474963436

14
Krzysztof Kaczor

Si vous m'aimez oubliez "cl", vous pouvez utiliser plusieurs préfixes dans les extraits :)

{
    "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"
    }   
}
8
FOLOF

Une façon d'éviter cela consiste à modifier votre fichier tsconfig.json pour limiter l'ensemble des types importés automatiquement dans votre projet.

J'ai eu le même problème et je l'ai corrigé en ajoutant:

_types: []_

dans mon fichier tsconfig.json. Cela désactive TypScript (et par extension VSCode) de manière à importer automatiquement tous les packages de nœud dotés de _@types/_ dans la configuration du projet. Cela n'empêche pas TS d'importer ces définitions de type si vous importez explicitement un package utilisant ces types.

Dans mon cas spécifique, la définition de console provenait de _@types/node_, qui avait été importé dans le projet en tant que dépendance de Storybook. Cependant, mon projet étant un projet Webpack, destiné à être exécuté dans un navigateur, importer des types Node.js dans mon code source n'avait donc aucun sens. Les types de base que vous souhaitez utiliser dans un navigateur sont des types dom et non des types de nœud.

Selon votre projet, vous devrez peut-être explicitement ajouter l'ensemble des packages de types de base dans le paramètre types (_types: ["dom", "react"]_ et ainsi de suite). Cependant, dans mon cas, cela s'est avéré inutile, mon projet a été capable de compiler parfaitement avec une liste vide. Et la tendance de VSCode à importer automatiquement "console" semble avoir complètement disparu; Je n'ai pas remarqué d'autres effets pervers jusqu'à présent.

Plus d'informations sur les types de paramètres dans tsconfig.json ici: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

5
Talin