Typescript: console.log автоматически импортирует импорт console = require ('console');

Созданный на 10 мар. 2019  ·  42Комментарии  ·  Источник: microsoft/TypeScript

Действия по воспроизведению:
введите console. . 7 раз из 10 vscode вставит import console=require('console'); в начало файла импорта, что приведет к ошибке компиляции.

Единственная самая раздражающая проблема кода vs.


Возникает ли эта проблема, когда все расширения отключены? Не уверен

Bug Fixed VS Code Priority

Самый полезный комментарий

Добавьте файл console.d.ts в корень src и добавьте следующее содержимое:

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

Это исправит ваш импорт

Все 42 Комментарий

То же самое и здесь (Ubuntu 18.04). Оно пришло с новым обновлением VSCode .. Очень раздражает.

Похоже, это вызвано определением типа node . Удаление:

declare module "console" {
    export = console;
}

в ../node_modules/@types/node/index.d.ts кажется временным исправлением, пока это определение не будет обновлено. Или это может быть вызвано другим установленным модулем узла, который объявляет определение типа для console . Вы можете понять это, проследив путь, куда когда-либо ведет import console=require('console') . Кредит на этот stackoverflow .

Воспроизводится ли это в последней сборке инсайдеров VS Code со всеми отключенными расширениями? Убедитесь, что вы также используете последнюю версию TypeScript.

Также @Zlass, какую версию типов узлов вы используете? Я не вижу этого объявления в последнем @types/node и не могу воспроизвести эту проблему

Хорошо, я считаю, что нашел причину. Похоже, это ошибка, связанная с @types/styled-components зависимостью от @types/react-native , что конфликтует с типом console узла.

Мне удалось воспроизвести его в сборке для инсайдеров, создав новое приложение для реагирования на машинописный текст с create-react-app и установив @types/styled-components .

Я не думаю , что это вопрос VS Code и есть уже открытый вопрос для него в DefinitelyTyped здесь

Хммм, я не использую стилизованные компоненты. Не исключено, что он появился вместе с какой-то другой библиотекой

@mschipperheyn Я бы порекомендовал проверить, что появляется при попытке автозаполнения console . Я смог выяснить, в каком пакете было объявлено другое определение console , просмотрев ссылки на каждое предложение автозаполнения.

У меня то же самое (на версии 1.30.2). Это проект React Native, не использующий стилизованные компоненты (но любая другая библиотека может). При вводе console будет соответствующий результат автозаполнения. Первый выполняет авто import , второй - авто require .

Screen Shot 2019-03-20 at 17 47 43

Изменить: похоже, что в моей настройке он указывает на следующий ~/Library/Caches/typescript/3.2/node_modules/@types/node/index.d.ts в строке 207

Добавьте файл console.d.ts в корень src и добавьте следующее содержимое:

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

Это исправит ваш импорт

Спасибо @BrendonSled за это временное исправление ... которое, похоже, решило эту

Эта проблема была помечена как «Внешняя» и в последнее время не наблюдалась. Он был автоматически закрыт для хозяйственных нужд.

@BrendonSled благодарит вас !! Наконец, решение tmp

У кого-нибудь есть обновления по этому поводу, помимо временных решений? Google возвращает только эту ссылку и ссылку на StackOverflow, опубликованную ранее

@BrendonSled спасибо за ваше решение

Это сводит меня с ума...

Ах, это так раздражает!

Здесь та же проблема. Я использую Linux Mint 19.1.

Единственный способ обойти эту функцию auto import - это либо:

Перейдите к File : arrow_forward: Preferences : arrow_forward: Settings : arrow_forward: Найдите Javascript Auto Imports и / или Typescript Auto Imports : arrow_forward: снимите флажок Enable/disable auto imports suggestions .

ИЛИ ЖЕ

Перейдите к File : arrow_forward: Preferences : arrow_forward: User Snippets : arrow_forward: Выберите global.code-snippets : arrow_forward: Сохраните его в /vscode/snippets/global.code-snippets : arrow_forward : затем добавьте и сохраните этот глобальный фрагмент (в качестве альтернативы вы можете создать фрагмент для конкретного языка, если вы не хотите, чтобы он был глобальным - это сделает фрагмент консоли ниже первой записи в списке автоматических предложений):

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

такая же проблема здесь Visual Studio 1.33.1 node 10
временное решение сработало для меня ...

Это бесит. Было бы здорово, если бы мы могли занести в черный список определенные импортные автомобили.

Это очень раздражает. Обходной путь, опубликованный @BrendonSled , недействителен в соответствии со строгими

'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 дает несколько предложений по этой проблеме .

В частности, и это предложение, и это предложение, кажется, улучшили для меня ситуацию.

@RyanCavanaugh Каким- либо образом мы можем улучшить опыт, даже если в пакете есть неправильные d.ts?

Благодарим @mattcarlotta за его ответ. Я просто форматирую это для JSON, поскольку VSCode, похоже, не уважает его иначе:

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

Это двигало меня 🙃 в проектах React Native

Эту проблему следовало исправить. Если вы все еще сталкиваетесь с этим, пожалуйста

  1. убедитесь, что вы по-прежнему видите поведение после установки этого плагина
  2. обеспечить минимальное воспроизведение выпуска.

@DanielRosenwasser
Я установил плагин, а затем пропал автоматический импорт.
Мне нужен автоматический импорт, но я не хочу автоматически импортировать консоль.

Хорошо, это звучит как отдельная проблема, которую вы должны зарегистрировать на https://github.com/Microsoft/TypeScript, если вы можете предоставить минимальное воспроизведение этой проблемы.

@DanielRosenwasser Этот плагин решил эту

Это означает, что проблема уже устранена и будет исправлена ​​в следующей версии VS Code.

это все еще не исправлено в последней версии vscode

Есть ли у нас недавние обновления по этой проблеме? эта проблема все еще сохраняется в последней версии vscode для меня.

Извините, это моя ошибка. Это будет в релизе в следующем месяце. Инсайдеры и пользователи https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next получат исправление.

@DanielRosenwasser Вы в этом уверены? У меня установлено JavaScript and TypeScript Nightly но проблема все еще возникает.

Я вижу проблему как с VScode Insider (без плагина), так и с VSCode (с установленным плагином). Кажется, они оба используют 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

Не могли бы вы снова открыть это? Потому что это еще не исправлено (даже с плагином Typescript Nightly)

Привет всем, может ли кто-нибудь поделиться реальным репо, в котором есть эта проблема? Звучит безумно, но я вообще не умею воспроизводить. В TypeScript есть специальная обработка для исключения автоматического импорта для объявлений, которые реэкспортируют глобальный объект в течение более года. Тот факт, что это происходит не со всеми вами, означает, что происходит что-то очень странное, но, очевидно, довольно обычное.

Мое лучшее предположение состоит в том, что некоторая комбинация зависимостей дала вам две разные версии @types/node одновременно, и это каким-то образом помешало системе. Я собираюсь попытаться изобрести подобные сценарии, но если кто-то может предоставить точную среду, в которой это происходит, это определенно ускорит исправление.


Обновление: разобрался с репро. Не обращайте внимания.

Похоже, это не войдет в RC, но должно появиться в ночном и правильном выпуске 3.6.

Я запускаю Mac и Ubuntu. Mac в порядке, у Ubuntu есть эта проблема.
Исправлено с помощью Nightly.

Тем, кто говорит, что JavaScript и TypeScript Nightly не работают, обязательно настройте их правильно:

  1. Откройте файл JavaScript или TypeScript в VS Code.
  2. В палитре команд VS Code запустите команду TypeScript: Выберите версию TypeScript.
  3. Убедитесь, что у вас выбрана версия Use VS Code

Я счастливо жил без этой проблемы, пока не установил styled-components, и вот она снова.

@tlaak какую версию TypeScript вы используете? Я уверен, что исправил это в версии 3.6. Конечно, более старые версии TypeScript всегда будут демонстрировать такое поведение.

@andrewbranch Я думаю, что использовал старую версию 3.5.x, созданную с помощью create-response-app. Но в любом случае у меня больше нет доступа к проекту, поэтому я не могу подтвердить.

@andrewbranch Я имел удовольствие

есть версия 3.5.x, а в 3.6.2 больше нет автоматического импорта консоли.
Кажется, что 3.6.2 является версией vscode по умолчанию ts.

image

убедитесь, что ваш vscode установлен по умолчанию, а не для версии ts рабочей области / проекта
image

Вы можете понять это, проследив путь, куда ведет import console = require ('console'). Кредит на этот stackoverflow.

@Zlass, это спасатель 🙏

Для тех, у кого все еще есть проблемы: вы можете выполнить шаги в stackoverflow

Была ли эта страница полезной?
0 / 5 - 0 рейтинги