Автоматический импорт в vscode, предлагающий только абсолютный путь с подпакетами lerna в TypeScript

По какой-то причине совсем недавно мой vs-код изменился и начал предлагать только абсолютные импорты из уровня подпакетов с моими пакетами Lerna, например:

введите описание изображения здесь

Как вы можете видеть, автоматический импорт предлагает @package/server/src/database путь к файлу, когда он должен быть ../database так как редактируемый файл находится в том же пакете и находится всего в одной папке под файлом, содержащим переменную базы данных, которую я пытаюсь использовать.

Это ошибка или проблема конфигурации?

Я установил свой Import Module Specifierустановка для TypeScript в vs-code всех трех параметров (авто, относительный и абсолютный), и ни один из них, кажется, не имеет никакого значения.

5 ответов

На VScode File> Настройки> Настройки> Настройки пользователя

"typescript.preferences.importModuleSpecifier": "относительный"

У меня отлично работает. Это импорт

import { RegistrationComponent } from '../../abc-modules/registration/registration.component';

на месте

import { RegistrationComponent } from 'app/abc-modules/registration/registration.component';

В коде Visual Studio меню «Файл» → «Настройки» → «Настройки» → «Настройки пользователя».

поиск по importModuleSpecifier

Моя проблема заключалась в том, что у меня былbaseUrlопция установлена ​​в моемtsconfig.jsonфайл.

      {
  "compilerOptions": {
    "baseUrl": ".", // remove
  },
}

После удаления опции; VSCode сразу начал импорт по относительному пути. Преимущество этого метода в том, что вы можете сохранить опцию VSCode.importModuleSpecifierустановлен вshortestи импорт относительного пути по-прежнему будет работать.

Я попал сюда из Google и столкнулся с противоположной проблемой. Мой экземпляр Visual Studio Code всегда импортировал относительный путь, даже если он был из другого пакета Lerna.

Оказывается, я просто забыл добавить пакет, который он ошибочно импортировал, в мой потребительский пакет. package.json файл.

Теперь все работает как положено.

Возможно, вам понадобится комбинацияbaseUrl иpaths.

tsconfig.json
        "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "holograph/src/*": ["src/*"]
    },
  }
Настройки VSCode
      "typescript.preferences.importModuleSpecifier": "non-relative" // or "shortest"

Мои папки такие. Когда я вapps/app, я могу автоматически импортировать в VSCode из пакетов сfrom 'holograph/src/ui/...'. Но когда я вpackages/holographкомпоненты пользовательского интерфейса, по причине, которую я еще не обнаружил, они автоматически импортируются изsrc/ui, что приводит к ошибке сборки. Мне пришлось вручную импортировать из пути к пакетуhologrpah/src/ui. Выполнение вышеуказанных путей импорта переназначает исправленный автоматический импорт VSCode.

      node_modules
apps (next.js applications)
 ├── app
 |   └── pages
 ├── operator
 ├── storybook
packages (shared components & libraries)
 ├── holograph
 |   └── src
 |       └── ui
 ├── tsconfig
 ├── eslint-config-holograph
...

PS: Это тоже сработало, но я не уверен, насколько это действительно. По сути, установка baseUrl на одну папку вверх. ‍♂️

        "compilerOptions": {
    "baseUrl": "../",
    },
  }
Другие вопросы по тегам