Typescript: console.log importações automáticas import console = require ('console');

Criado em 10 mar. 2019  ·  42Comentários  ·  Fonte: microsoft/TypeScript

Passos para reproduzir:
digite console. . 7 de 10 vezes, o vscode irá inserir import console=require('console'); no topo das importações do arquivo, levando a um erro de compilação.

O problema mais irritante do código vs de longe.


Este problema ocorre quando todas as extensões estão desativadas ?: Não tenho certeza

Bug Fixed VS Code Priority

Comentários muito úteis

Adicione um arquivo console.d.ts à sua raiz src e adicione o seguinte conteúdo:

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

Isso vai consertar sua importação

Todos 42 comentários

O mesmo aqui (Ubuntu 18.04). Ele veio com a nova atualização do VSCode .. Muito chato.

Parece ser causado pela definição de tipo de node . Removendo:

declare module "console" {
    export = console;
}

em ../node_modules/@types/node/index.d.ts parece ser uma correção temporária até que a definição seja atualizada. Ou pode ser causado por outro módulo de nó instalado que declara uma definição de tipo para console . Você pode descobrir seguindo o caminho para onde import console=require('console') leva. Crédito a este stackoverflow .

Isso se reproduz nas últimas versões internas do VS Code com todas as extensões desativadas? Certifique-se de que está usando a versão mais recente do TypeScript também

Também @Zlass qual versão das @types/node e não consegui reproduzir este problema

Ok, acredito que encontrei a causa. Parece que é um bug relacionado a @types/styled-components ter uma dependência de @types/react-native , que entra em conflito com o tipo console do nó.

Consegui reproduzi-lo na compilação interna criando um novo aplicativo de reação de texto digitado com create-react-app e instalando @types/styled-components .

Não acho que seja um problema do VS Code e já existe um problema aberto para ele em DefinitelyTyped aqui

Hmmm, eu não uso componentes estilizados. Não é impossível que tenha vindo junto com alguma outra biblioteca

@mschipperheyn Eu recomendo verificar o que aparece quando você tenta completar automaticamente console . Consegui descobrir qual pacote estava declarando outra definição de console examinando as referências de cada sugestão de preenchimento automático.

Estou experimentando o mesmo (na versão 1.30.2). É um projeto React Native, não usando componentes estilizados (mas qualquer outra biblioteca pode). Ao digitar console abaixo está a respectiva saída do preenchimento automático. O primeiro faz um import automático, o segundo faz um require automático.

Screen Shot 2019-03-20 at 17 47 43

Edit: Parece que na minha configuração está apontando para o seguinte ~/Library/Caches/typescript/3.2/node_modules/@types/node/index.d.ts na linha 207

Adicione um arquivo console.d.ts à sua raiz src e adicione o seguinte conteúdo:

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

Isso vai consertar sua importação

Obrigado @BrendonSled por aquela correção temporária ... que parece ter resolvido para mim - agora para adicionar isso a todos os meus outros projetos 🙈

Este problema foi marcado como 'Externo' e não teve nenhuma atividade recente. Ele foi fechado automaticamente para fins de manutenção.

@BrendonSled obrigado !! Finalmente uma solução tmp

Alguém tem uma atualização sobre isso além de soluções temporárias? O Google retorna apenas este link e o link StackOverflow postado antes

@BrendonSled obrigado pela sua solução

Isto está me enlouquecendo...

Argh, isso é tão chato!

Mesmo problema aqui. Estou no Linux Mint 19.1.

A única maneira de contornar esse auto import recurso é:

Vá para File : arrow_forward: Preferences : arrow_forward: Settings : arrow_forward: Pesquise Javascript Auto Imports e / ou Typescript Auto Imports : arrow_forward: desmarque Enable/disable auto imports suggestions .

OU

Vá para File : arrow_forward: Preferences : arrow_forward: User Snippets : arrow_forward: Selecione global.code-snippets : arrow_forward: Salve-o em /vscode/snippets/global.code-snippets : arrow_forward : em seguida, adicione e salve este snippet global (alternativamente, você pode criar um snippet específico de idioma se não quiser que seja global - isso tornará o snippet do console abaixo da primeira entrada na lista de sugestões automáticas):

{
  "Print to console": {
    prefix: ["console", "console.", "console.l", "console.lo", "console.log"],
    body: ["console.log($1);"],
    description: "Log output to console"
  }
};

mesmo problema aqui visual studio 1.33.1 nó 10
solução temporária funcionou para mim ...

Isso é irritante. Seria ótimo se pudéssemos colocar na lista negra algumas importações de automóveis.

Isso é extremamente irritante. A solução alternativa postada por @BrendonSled é inválida de acordo com ts estritos. Alguma outra maneira de consertar isso?

'export=' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.   ts(7022)

@AndrewMorsillo dê algumas sugestões sobre este assunto .

Em particular, tanto essa sugestão quanto essa sugestão parecem ter melhorado a situação para mim.

@RyanCavanaugh Há alguma maneira de melhorar a experiência, mesmo que haja um d.ts incorreto de um pacote?

Agradecemos a @mattcarlotta por sua resposta. Estou apenas formatando isso para JSON, pois o VSCode não parece respeitar isso de outra forma:

{
    "Print to console": {
      "prefix": ["console", "console.", "console.l", "console.lo", "console.log"],
      "body": ["console.log($1);"],
      "description": "Log output to console"
    }
}

Isso tem me motivado 🙃 nos projetos React Native

Este problema deveria ter sido corrigido. Se você ainda está enfrentando isso, por favor

  1. certifique-se de que ainda vê o comportamento após instalar este plugin
  2. fornecer uma reprodução mínima do problema.

@DanielRosenwasser
Eu instalei o plug-in e perdi qualquer importação automática.
Quero a importação automática, mas não quero importar automaticamente o console.

Ok, isso soa como um problema separado que você deve registrar em https://github.com/Microsoft/TypeScript se puder fornecer uma reprodução mínima desse problema.

@DanielRosenwasser Esse plugin resolveu para mim. Não tenho certeza se entendi o que isso significa. É uma solução alternativa até que uma nova versão do VSCode seja enviada ou é uma solução mais permanente?

Isso significa que o problema já foi corrigido e será corrigido na próxima versão do VS Code.

isso ainda não foi corrigido na última versão do vscode

Temos alguma atualização recente para este problema? esse problema ainda persiste na versão mais recente do vscode para mim também.

Desculpe, minha culpa. Será no lançamento do próximo mês. Insiders e usuários de https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next terão a correção disponível.

@DanielRosenwasser Tem certeza disso? Tenho JavaScript and TypeScript Nightly instalado e ainda estou tendo esse problema.

Estou vendo o problema com o VScode Insider (sem o plug-in) e o VSCode (com o plug-in instalado). Ambos parecem usar TS 3.6.0-dev.20190810

VSCode

Version: 1.37.0
Commit: 036a6b1d3ac84e5ca96a17a44e63a87971f8fcc8
Date: 2019-08-08T01:22:37.660Z
Electron: 4.2.7
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Darwin x64 18.7.0

VSCode Insider

Version: 1.38.0-insider
Commit: ffa22b268f451b5211abbe2d2a47e6b753b55b1a
Date: 2019-08-13T07:23:55.783Z
Electron: 4.2.9
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Darwin x64 18.7.0

Screenshot 2019-08-13 at 17 08 37

Isso poderia ser reaberto? Porque ainda não foi corrigido (nem mesmo com o plugin Typescript Nightly)

Olá a todos, alguém consegue compartilhar um repositório real com esse problema? Parece loucura, mas não consigo reproduzir de jeito nenhum. O TypeScript teve tratamento especial para excluir importações automáticas de declarações que apenas reexportam um global por mais de um ano. O fato de que isso não está acontecendo para todos vocês significa que algo muito estranho, mas aparentemente bastante comum, está acontecendo.

Meu melhor palpite é que alguma combinação de dependências deu a você duas versões diferentes de @types/node simultaneamente e, de alguma forma, isso está jogando uma chave no sistema. Vou tentar inventar cenários como esse, mas se alguém puder fornecer um ambiente exato onde isso acontece, com certeza vai acelerar a correção.


Atualização: descobri um repro. Desprezo.

Parece que isso não vai chegar ao RC, mas deve chegar ao nightly e ao lançamento adequado do 3.6.

Eu executo o Mac e o Ubuntu. Mac está bem, o Ubuntu tem esse problema.
Corrigido com Nightly.

Para quem está dizendo que JavaScript e TypeScript Nightly não estão funcionando, certifique-se de configurá-lo corretamente:

  1. Abra um arquivo JavaScript ou TypeScript no VS Code.
  2. Na paleta de comandos do VS Code, execute o TypeScript: comando Selecionar versão do TypeScript.
  3. Certifique-se de que você selecionou a versão Usar código do VS

Eu vivia feliz sem esse problema até instalar componentes estilizados e lá está ele de novo.

@tlaak qual versão do TypeScript você está usando? Tenho certeza de que corrigi isso no 3.6. Obviamente, as versões anteriores do TypeScript continuarão a exibir esse comportamento para sempre.

@andrewbranch Acho que estava usando a versão 3.5.x mais antiga configurada por create-react-app. Mas de qualquer forma, não tenho mais acesso ao projeto, então não posso confirmar.

@andrewbranch Tive o prazer de me deparar com esse problema muito chato com meu projeto e, depois de atualizar o TypeScript de 3.5.x para 3.6, posso confirmar que foi corrigido !! 🎉 Para sua informação, para qualquer pessoa com este problema: certifique-se de que a versão do Typescript no canto inferior direito do VS Code também esteja definida como 3.6.x

a versão 3.5.x está lá, e na 3.6.2, não há mais importação automática de console.
Qual 3.6.2 é a versão ts padrão do vscode parece.

image

certifique-se de que seu vscode esteja configurado para o padrão e não para a versão ts do espaço de trabalho / projeto
image

Você pode descobrir seguindo o caminho para onde import console = require ('console') leva. Crédito a este stackoverflow.

@Zlass, isso é um salva-vidas 🙏

Para quem ainda tem problemas: você pode seguir as etapas em stackoverflow

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

CyrusNajmabadi picture CyrusNajmabadi  ·  3Comentários

wmaurer picture wmaurer  ·  3Comentários

Antony-Jones picture Antony-Jones  ·  3Comentários

remojansen picture remojansen  ·  3Comentários

kyasbal-1994 picture kyasbal-1994  ·  3Comentários